번역 너무 어렵네요.
오역은 제 짧은 영어 탓이며 읽으시고 댓글로 지적해 주시고, 더 적절하고 직관적인 문장으로 정정해 주십시오
원문 : https://medium.com/@bytemaster/eosio-development-update-272198df22c1
EOSio 개발 업데이트(Multi Index API, Context Free Actions, SegWit, and new Interpreter)
지난 몇 주 블락원은 개발자들, 확장성 그리고 안정성에 영향을 줄 몇몇 아주 중요한 업데이트들로 매우 생산적이었다. (활발히 움직였다?)
1. Generic Multi Index Database API
스마트 컨트랙트를 개발하면서 연관검색하고, 저장하고, 데이터를 찾기 위해 데이터베이스 개요를 정의하는 것을 포함했다.
이것은 여러 분야에서 동일한 데이터를 분류하고/색인을 필요로 하는, 모든 지표 가운데 지속성을 유지해야 하는 개발자들에게 매우 일반적인 것이다.
스팀과 비트쉐어 개발에 참여한 사람들은 부스트의 힘 : Multi Index Container을 안다.
이 컨테이너들은 강력하고, 유연하고 안전한 API를 제공할 것이다.
나는 오래도록 우리의 웹어셈블리 컨트랙트에 유연하고 강력한 시스템을 원해왔다.
나는 스마트 컨트랙트가 데이터베이스에 접속하고 (우리가) 개발자들에게 매우 유사한 API를 제공할 수 있는 방식을 변화시킨 것을 알리게 되어 기쁘다.
1)Database Iterators
(반복) 발생을 만드는 많은 부분은 반복기에 기초한 새로운 데이터베이스 API의 창조다.
반복기는 빠른 검색을 가능하게 하고 데이터베이스 오브젝트에 반복되어 웹어셈블리에 통제권을 준다.
이 새로운 API는 O(log(n)) to O(1)의 데이터베이스에서 전후 아이템을 찾는 복잡성을 변화시켜 증가하는 드라마틱한 퍼포먼스를 제공한다.
2. Context Free Actions
computate : calculate에 비해 복합 요소가 작용하는 계산(계산과 구분하기 위해 컴퓨테이트라고 씁니다)
sha(Secure Hash Algorithm, 안전한 해시 알고리즘)
context free action은 오직 트랜젝션 데이터에 달린 컴퓨테이션들을 포함합니다.
이러한 계산의 초기 예로 서명 입증(validation)이 있습니다.
정해진 트랜젝션 데이터와 서명만으로 우리는 서명된 트랜젝션의 퍼블릭 키를 컴퓨테이트할 수 있습니다.
이 컴퓨테이션은 블록체인이 수행해야만 하는 가장 비용이 많이 드는 개별 컴퓨테이션들 중 하나입니다.
이 컴퓨테이션은 context free이기 때문에 병렬구조에서 수행 가능합니다.
context free actions는 입증(validation)을 위해 블록체인에 접속이 없는 경우를 제외하면 다른 (사용자) 실행들과 같습니다.
이것은 서명 입증(verification)처럼 EOSIO가 병렬구조에서 모든 context free actions를 진행 가능하게 합니다.
더 중요하게, 이것은 보편화된 서명 입증(verification)을 가능하게 합니다.
보편화된 서명 입증(verification)의 중요성을 이해하려면, inter-blockchain communication의 사용 케이스를 고려해야 합니다.
이 사용 케이스에서 사용자는 256sha 실행들의 128개 and/or 14개 서명 입증들(verifications)을 포함한 머클 증명을 제공해야만 합니다.
(이더리움의 머클 증명을 디스하는? 머클 증명의 데테일을 몰라서 해석하기 어려운...)
이 모든 데이터와 컴퓨테이션은 외부(foreign) 체인 상 특정 블록에서 발생한 특수한 실행을 증명하는 것 and/or
2/3 프로듀서에 의해 입증된 특정 블록을 증명하는 것을 간단하게 처리한다.
비지니스 회로는 블록 ID가 유효했는지와 실행이 그 블록에 있었는지 단지 증명하는 것을 필요로 한다.
실행이 블록에서 있었는지 증명하는 계산들(calculations)은 서명에서 퍼블릭 키를 얻기 위한 계산들(calculations)과 마찬가지로 비지니스 회로에서는 필요치 않다.
Context Free Actions에 대한 지원으로 이더리움(샤딩, 라이덴, 플라즈마, 스테이트 채널 등)에 의해 제안된 확장성 테크닉들 대부분은
좀 더 효율적이고, 병령가능하고, 실용으로 개선될 것입니다.
이것은 inter-blockchain communication과 제한 없는 확장성을 효율적이게 하는 EOSIO의 다른 측면들과 함께 작용할 것입니다.
3. SegWit
SegWit(또는 분리된 증인)의 개념은 트랜젝션이 수정불가하게 블록체인에 포함된 후에 트랜젝션 서명들은 사실 적절치 않다는 것이다.
일단 수정불가하게 되면 서명 데이터는 분리되어질 수 있고 다른 사람이 현 상태에서 끌어낼 수 있다.
서명들은 대부분 트랜재션들의 큰 비율을 차지하는데 이는 디스크 사용과 동기화 시간에서 거대한 savings(파일)을 나타낸다.
이와 같은 개념은 inter-blockchain communication에 사용된 머클 프루프에 적용할 수 있다.
증명이 수용되고 철회할 수 없도록 블록체인에 로그되면, 증명에 사용된 sha256 해시들의 2KB는 적합한 블록체인 상태를 얻으려는 데 더는 필요치 않다.
inter-blockchain communication의 경우 이 savings(파일)은 일반적인 서명들의 savings(파일)보다 32x크다.
SegWit의 다른 예는 스팀 블로그 포스트를 들 수 있다.
이 모델에서 포스트는 단지 sha256(블로그 컨텐트)을 포함할 것이고 블로그 컨텐트는 분리된 증인 데이터에 있을 것이다.
블록 프로듀서는 컨텐트가 존재하고 주어진 해시를 가지고 있는 것을 입증할 것이다.
그러나 블로그 컨텐트는 블록체인 로그로부터 현 상태를 회복시키기 위해 저장될 필요는 없을 것이다.
이는 저장(하는 과정, 행위) 없이 컨텐트가 알려지면 영원한 컨텐트라는 것을 증명 가능케 한다.
비트코인에 SegWit이 어떻게 도입될지에 대한 논란이 있었다. (결과적으로 BCC 탄생)
그러나 비트코인에 관련된 SegWit에 대한 대부분의 논쟁들은 DPOS의 맥락에 해당되지 않는다.
예로, DPOS로 아래와 같은 것이 가능하다.
1. 브록프로듀서가 풀 레코드를 보관하도록 요구한다.
2. Inter-blockchain Merkle Proofs가 퍼블릭 데이터로부터 재건되어질수 있다.
3. 공인된 블록프로듀서들이 그들의 블록들이 유효한지 그 트랜젝션들에 적합한 서명 허가들이 존재하는지 증거를 제공하는 책임을 진다.
4. BFT-DPOS에 21(블록프로듀서, BP) 독립적인 입증들이 있고 잃어버린 서명을 초기화 위해서는 블록프로듀서 전원의 합의를 필요로 한다.
4. WebAssembly Interpreter
EOSIO는 지금 웹어셈블리에 두개의 다른 실행 엔진을 지원한다.
오리지널 JIT 구현은 초기 "느린" 컴파일화 과정 후 빠른 실행을 제공한다.
그리고 새로운 Binaryen 해석 프로그램은 어떠한 느린 초기 단계 없이 표준화된 규격 참조 구현을 제공한다.
블록 프로듀서들은 컴파일러가 x86를 최적화하는 동안에 해석 프로그램을 사용할 수 있을 것이다.
더구나, 어떤 출력이 "바른 출력"인지 (컴퓨팅)충돌이 일어나는 중에도 표준-정의된 Binaryen 해석 프로그램을 쓸 수 있다.
같은 출력을 만들어내야하는 최적화로써 JIT 구현과 별개로.
퍼포먼스 테스트에서 Binaryen 해석 프로그램은 JIT 구현 스피드의 약 20%다.
어쨌든, 대부분 트랜젝션들에서 WASM(웹어셈블리) 실행 시간은 전체 트랜젝션 진행 시간의 작은 비율이다.
데이터베이스 액세스와 다른 블록체인 계산이 진행 시간의 대부분을 차지한다.
측정에서, 해석 프로그램은 단순 계약(통화처럼)을 위한 약 5%의 실제 수행에 영향을 준다.
우리는 6월 EOSIO 최초 릴리즈를 위한 첫 포퍼먼스를 통해 정확성, 안정성 그리고 안정성(보안)에 중점을 두고 갈 것이다.
이 말은 확장성과 최적화는 항상 염두에 두고 있고 EOSIO의 모든 것은 스케일에 따라 제작되고 있다는 의미다.
5. 새로운 팀 멤버
B1팀에 합류한 Arhag을 환영한다. BitShares와 Steem에 오래도록 기여한 Arhag은 데이터베이스 API에서 우리와 일한다.
6. 마치며
개발은 빠르게 진행되고 있고 우린 이런 최근 개발들에 매우 고무되어 있다.