1 aiblocks: 수수료없는분산암호화폐네트워크 Colin LeMahieu clemahieu@gmailcom Abstract 최근높은수요와제한된확장성으로인해인기있는가상화폐들의트랜잭션시간과수수료가늘어났고, 이는불만족스러운경험을낳았습니다 여기에서우리는독창적인블록 - 래티스구조의암호화폐로, 각계정이고유한블록체인을가지고, 거의즉각적으로처리되는트랜잭션속도와제약없는확장성을가진 aiblocks 를소개합니다 각사용자는자신들의고유한블록체인을가지는데, 이는네트워크의다른참여자와비동기적으로갱신할수있게하며, 최소한의오버헤드로빠르게트랜잭션을처리할수있게합니다 트랜잭션들은트랜잭션의금액이아닌계정의잔고를추적하며, 이는보안을약화시키지않고도적극적으로데이터베이스를축약할수있게합니다 최근까지, aiblocks 네트워크는 4 백 2 십만트랜잭션들을처리해왔는데전체원장의크기는 17GB 에불과합니다 aiblocks 의수수료가없으며, 순식간에처리되는트랜잭션들은 aiblocks 가소비자트랜잭션을위한최고의암호화폐가되게합니다 Index Terms cryptocurrency, blockchain, raiblocks, distributed ledger, digital, transactions I 소개 2009 년비트코인의구현이후, 전통적인정부가보증하는통화와금융시스템으로부터암호화폐에기반한현대적인지불시스템으로의변화가커졌으며, 암호화폐는신뢰없이도안전하게자금을보관하고전송할수있게되었습니다 [1] 통화가효율적으로기능하기위해서는쉽게전달할수있어야하고, 비가역적이어야하며, 수수료는제한되거나없어야합니다 늘어나는트랜잭션시간, 높은수수료그리고의문이생기는네트워크의확장성은일상적인통화로서비트코인의실용성에대한의문을증폭시켰습니다 이논문에서우리는제약없는확장성을제공하며수수료가없는혁신적인블록-래티스자료구조에기반한저지연 (low-latency) 암호화폐인 aiblocks 를소개합니다 aiblocks 는설계적으로고성능암호화폐가되는것을유일한목표로가진단순한프로토콜입니다 aiblocks 프로토콜은낮은성능의하드웨어에서동작할수있으며이는일상적인사용을위한실용적이고탈중앙화된암호화폐가되게합니다 이논문에기술된암호화폐에관한통계들은출판시점에는정확합니다 II 배경 2008 년사토시나카모토라는필명으로익명의개인이세계최초의탈중앙화암호화폐인비트코인의개요를서술한백서를출간했습니다 [1] 비트코인이불러온주요혁신은공개적이고불변하며탈중앙화된자료구조인블록체인으로, 이는통화의거래에대한원장으로사용됩니다 불행히도비트코인이성장함에따라, 프로토콜의여러문제점들이많은응용에서비트코인을사용할수없게만들었습니다 : 1) 불충분한확장성 : 블록체인의각블록은제한된양의데이터를저장할수있는데, 이는시스템이초당 그만큼의트랜잭션만처리할수있음을의미하며, 블록의자리를상품으로만들어버렸습니다 현재평균트랜잭션수수료는 $1038 [2] 입니다 2) 높은지연성 : 평균확인시간은 164 분입니다 [3] 3) 전력비효율성 : 비트코인네트워크는년간 2728TWh 의예상전력을사용하며각트랜잭션당평균적으로 260KWh 를소비합니다 [4] 비트코인, 그리고다른암호화폐들은악의적인행위자들에대항하면서합법적인트랜잭션들을검증하기위해전역원장에대한합의를달성하며동작합니다 비트코인은작업증명 (PoW) 이라고불리는경제적인수단을통해합의를이룹니다 PoW 시스템에서시스템참여자들은논스라고불리는수를계산하기위해경쟁하는데전체블록의해시가대상범위에포함됩니다 이유효범위는유효한논스를찾는데소요되는평균시간을일관되게유지하기위해비트코인네트워크의누적연산능력에반비례합니다 유효한논스를발견한사람은블럭을블록체인에추가할수있게됩니다 즉논스를계산하기위해더많은연산자원을소비한사람들이블록체인의상태에있어더큰역할을하게됩니다 각주체가탈중앙화된시스템에서추가적인힘을얻기위해여러엔터티들로서동작하기때문에 PoW 는시빌 (ybil) 공격에저항성을가지며, 글로벌한자료구조에접근할때본질적으로존재하는경쟁상황 (race condition) 을크게줄입니다 다른합의프로토콜인지분증명 (Po) 은 2012 년 Peercoin [5] 에서처음소개되었습니다 Po 시스템에서참여자들은해당암호화폐를보유한양에따라가중치를가지고투표에참여합니다 이러한구조에서더많은재정적투자를한사람들은더많은힘을가지게되어본질적으로정직성을유지하도록동기가부여되고, 그렇지않을경우그들의투자를잃을위험이생깁니다 Po 는낭비적인연산능력경쟁을멀리하며, 낮은성능의하드웨어에서동작하는경량소프트웨어만을요구합니다 최초의 aiblocks 논문과첫번째베타구현은 2014 년 12 월에발간되었고, 최초의방향성비순환그래프 (DAG) 기반의암호화폐중하나가되었습니다 [6] 곧다른 DAG 암호화폐들이개발되기시작하였는데가장주목할만한것은 DagCoin/Byteball 과 IOTA 입니다 [7], [8] 이 DAG 기반암호화폐들은블록체인의틀을깨고퍼포먼스와보안성을향상시켰습니다 Byteball 은정직하고, 평판이좋으며사용자가신뢰하는 증인 들로구성된 메인체인 에의존하여합의를취득합니다 반면에 IOTA 는쌓여있는트랜잭션들의누적된 PoW 를통해합의를이룹니다 aiblocks 는충돌하는트랜잭션들에대한잔고가중치투표를통해합의를얻습니다 이합의시스템은강력한탈중앙화된시스템을유지하면서도, 더빠르고, 더결정적인트랜잭션들을제공합니다 aiblocks 는지속적으로개발을진행하고있으며, 가장고성능의암호화폐중하나로자리매김하고있습니다
2 eceive epeat Observe Quorum Confirm (a) 충돌이없는경우추가적인작업부하는발생하지않습니다 eceive epeat Observe Conflict Vote Confirm (b) 충돌하는트랜잭션이생긴경우, 노드들은유효한트랜잭션에투표합니다 Fig 1 aiblocks 는일반적인트랜잭션에는추가적인작업부하가생기지않습니다 충돌하는트랜잭션이생긴경우, 노드들은유지할트랜잭션에반드시투표해야합니다 III aiblocks 구성요소 전반적인 aiblocks 아키텍처를서술하기전에, 시스템을구성하는개별컴포넌트를정의합니다 A 계정 계정은디지털서명키쌍에서공개키부분에해당합니다 어드레스라고도불리는공개키는다른네트워크참여자와공유되지만개인키는비밀로유지됩니다 디지털서명된데이터의패킷은그내용이개인키소유자에의해승인되었다는것을보증합니다 한사용자는여러계정을가질수있지만, 한계정에는단하나의공개어드레스가존재합니다 B 블록 / 트랜잭션 블럭 과 트랜잭션 이라는용어는종종대체하여사용되는데, 블럭은하나의트랜잭션을포함합니다 트랜잭션은구체적으로어떤행위를말하며, 반면에블럭은트랜잭션의디지털인코딩을나타냅니다 트랜잭션들은트랜잭션이실행되는계정에속한비밀키로서명됩니다 C 원장 원장은계정의글로벌한집합으로, 원장에서각계정은고유의트랜잭션체인을가집니다 (Figure 2) 이는런타임계약을디자인타임계약으로대체하는범주에속하는핵심설계구성요소입니다 모든참여자는서명확인을통해오직계정의소유자만자신의체인을수정할 Block N A Block N A 1 Block 1 Block 0 Account B Block N B Account B Block N B 1 Account B Block 1 Account B Block 0 Account C Block N C Account C Block N C 1 Account C Block 1 Account C Block 0 Fig 2 각계정은계정의잔고이력을가지고있는고유의블록체인을가집니다 블록 0 는반드시 open 트랜잭션이어야합니다 (ection IV-B) 수있다는데동의합니다 이렇게하면공유된자료구조처럼보이는분산원장이공유되지않는자료구조의집합으로변환합니다 D 노드 노드는컴퓨터에서동작하며 aiblocks 프로토콜을따르고 aiblocks 네트워크에참여하는소프트웨어입니다 이소프트웨어는원장과노드가관리하는모든계정을관리합니다 노드는전체원장또는각계정의블록체인마다마지막몇블럭들만을보관한축약된이력을저장할수있습니다 새노드를설치할때에는전체이력을검증한후로컬에서과거이력을제거하는것이권장됩니다 IV 시스템개요 많은다른암호화폐들에서사용되는블록체인들과달리, aiblocks 는블록 - 래티스구조를사용합니다 각계정은계정의트랜잭션 / 잔고이력에해당하는고유의블록체인 ( 계정 - 체인 ) 을가집니다 (Figure 2) 각계정 - 체인은오직계정의소유자에의해서만변경될수있습니다 이는각계정 - 체인이즉시변경되고, 블록 - 래티스의다른부분에서비동기적으로반영되는것을허용하며, 이로인해빠른트랜잭션이가능해집니다 aiblocks 의프로토콜은극단적으로가볍습니다 각트랜잭션은인터넷에발신되기위한최소한의 UDP 패킷크기에들어갑니다 노드를실행하기위한하드웨어요구사항역시최소한이되는데, 노드들은대부분의트랜잭션에대해블럭들을기록하고재전송하는일만하면되기때문입니다 (Figure 1) 이시스템은제네시스잔고를가지고있는제네시스계정에서시작됩니다 제네시스잔고는고정된양으로절대늘어나지않습니다 이제네시스잔고는분할되어제네시스계정 - 체인에등록되는 send 트랜잭션들을통해다른계정으로전송됩니다 모든계정잔고의총합은절대전체시스템의총량상한을규정하는초기제네시스잔고를넘을수없으며이를늘릴수는없습니다 이섹션은어떻게다른유형의트랜잭션들이생성되어네트워크를통해전파되는지단계별로설명합니다 A 트랜잭션 한계정에서다른계정으로자금을보내려면두개의트랜잭션이필요합니다 : 발신자의잔고에서감액하는 send 트랜잭션과수신자의잔고를증액하는 receive 트랜잭션입니다 (Figure 3) 자금을발신자와수신자계정의개별트랜잭션으로전달하는것은몇가지중요한목적을가지고있습니다
3 디자인타임합의에집중하더라도, 네트워크상의나쁜행위자들을식별하고처리하는일들로인해, 트랜잭션의검증시지연시간이있습니다 aiblocks 에서합의는밀리세컨드에서초단위로빠르게이루어지기때문에우리는사용자에게전달받은트랜잭션들에대해 체결 과 미체결 이라는두가지친숙한범주를제시할수있습니다 체결된트랜잭션들은계정이수신블록들을만든트랜잭션들입니다 미체결된트랜잭션들은수신자의누적잔고에아직반영되지않은트랜잭션들입니다 이는다른암호화폐의더복잡하고낯선승인 (Confirmation) 단위를대신합니다 Time A B C Fig 3 블록-래티스의시각화 모든자금이동에는하나의 send 블록 () 과하나의 receive 블록 () 이필요하며, 각각은계정체인의소유주 (A,B,C) 에의해서명되어야합니다 1) 본질적으로비동기적으로들어오는트랜잭션들의순서를매김 2) 트랜잭션들을 UDP 패킷들에맞게작게유지 3) 자료용량을최소화하여원장의축약을가능하게함 4) 체결된트랜잭션들을미체결된트랜잭션들과격리 같은목적지계정으로전송하는하나이상의계정들은비동기적으로동작합니다 네트워크지연과함께발송계정이상호간통신할필요가없다는것은어느트랜잭션이먼저발생했는지알수있는일반적으로동의할만한방법이없다는것을의미합니다 더하기는결합적 (associative) 이기때문에, 입력의순서를매기는차례는중요하지않습니다 그러므로우리는그저전체적인합의만필요합니다 이것은런타임합의를디자인타임합의로변환하는주요설계요소입니다 수신하는계정은어느전송이먼저도착했는지, 어느전송이입력블록들중서명된순서로나타나는지를결정할수있습니다 만약계정이많은수의소액전송을받아큰금액을전송하려할경우, 우리는이것을하나의 UDP 패킷에맞도록표현하고싶습니다 수신하는계정이입력되는전송들에순서를매길때, 자기계정의잔고누계를갱신하기때문에계정은어느시점에건원하는금액을고정된크기의트랜잭션으로전송할수있습니다 이것은비트코인과다른암호화폐들이사용하는입력 / 출력트랜잭션모델과다릅니다 어떤노드들은계정들의모든트랜잭션이력을저장하는데에리소스를쏟고싶어하지않습니다 그들은오직각계정의현재잔고에만관심이있습니다 한계정이트랜잭션을만들때, 그계정은자신의누적잔고를인코딩하며, 이러한노드들은오직최신블록들만을유지하면됩니다 이는노드들이정확성을유지하면서도이전이력데이터를버릴수있게해줍니다 B 계정의생성 계정을만들기위해서는 open 트랜잭션을만들어야합니다 (Figure 4) 오픈트랜잭션은항상각계정 - 체인의첫번째트랜잭션이며최초로자금을받을때생성될수있습니다 account 필드는서명에사용되는개인키에서도출된공개키 ( 어드레스 ) 를저장합니다 source 필드는자금을보낸트랜잭션의해시를보관합니다 계정생성시당신을대신할대리인이반드시선택되어야하는데, 대리인은추후변경할수있습니다 (ection IV-F) 계정은자기자신을자신의대리인으로선언할수있습니다 open { account : DC04354B1 AE8FA2661B2, source : DC1E2B3F7C 1 8 2 A0E26B4A, r e p r e s e n t a t i v e : xrb_1anr posrs, work : 0000000000000000, type : open, s i g n a t u r e : 83B0 0 0 6 4 3 3 2 6 5 C7B204 } Fig 4 C 계정잔고 open 트랜잭션의구조 계정의잔고는원장자체에기록됩니다 트랜잭션의금액을기록하는대신에검증 (ection IV-I) 은 send 블록과그이전블록의잔고간의차이를확인할것을요구합니다 수신계정은이전잔고를새로운수신블록에주어진마지막잔액으로증가시킬수있습니다 이는대량의블록을다운로드할때처리속도를향상시키기위해수행됩니다 계정의이력을요구할때, 잔액이즉시제공됩니다 D 계정으로부터의송금 계정에서송금할때, 그어드레스는이미 open 블럭과잔액을가지고있어야합니다 previous 필드는계정 - 체인의이전블럭해시를가지고있습니다 destination 필드는자금이전달될계정을가집니다 send 블록은일단승인되면변경되지않습니다 네트워크에전파되고나면, 자금은즉시송금자의계정잔고에서감액되고, 수신자가이자금을받아들이도록서명할때까지 pending 상태로보류됩니다 보류중인자금은송금자의계정에서사용된것과같으며, 송금자가트랜잭션을취소할수없기때문에승인을기다리는것으로간주해서는안됩니다
4 send { p r e v i o u s : 1967EA355 F2F3E5BF801, balance : 010 a8044a0 1 d49289d88c, d e s t i n a t i o n : xrb_3w m37goeuufdp, work : 0000000000000000, type : send, s i g n a t u r e : 83B0 0 0 6 4 3 3 2 6 5 C7B204 } Fig 5 send 트랜잭션의구조 E 트랜잭션의수신 트랜잭션을완료하기위해서송금액의수신자는반드시 receive 블록을자신의계정 - 체인에생성해야합니다 (Figure 6) source 필드는연결된 send 트랜잭션의해시를나타냅니다 이블럭이생성되고전파되면, 계정의잔고가갱신되고그자금은공식적으로수신자계정으로이동하게됩니다 r e c e i v e { p r e v i o u s : DC04354B1 AE8FA2661B2, source : DC1E2B3F7C6 1 8 2 A0E26B4A, work : 0000000000000000, type : r e c e i v e, s i g n a t u r e : 83B0 0 0 6 4 3 3 2 6 5 C7B204 } Fig 6 receive 트랜잭션의구조 F 대리인지명 계정보유자가자신들을대신할대리인을선택할수있는것은작업증명또는지분증명프로토콜과유사성이없는강력한탈중앙화도구입니다 통상적인 Po 시스템에서계정소유자의노드는투표에참여하기위해반드시실행중이어야합니다 항상노드를실행시키는것은많은사용자에게실용적이지않습니다 대리인에게계정을대신하여투표할권한을주는것은이런요구사항을완화시킵니다 계정소유자는언제든다른계정을대리인으로지정할수있습니다 change 트랜잭션은이전대리인에게서투표가중치를감하고, 새로운대리인에게가중치를늘림으로써계정의대리인을변경합니다 (Figure 7) 이트랜잭션에서자금은이동하지않으며, 대리인은계정의자금을사용할권한을가지지않습니다 change { p r e v i o u s : DC04354B1 AE8FA2661B2, r e p r e s e n t a t i v e : xrb_1anrz posrs, work : 0000000000000000, type : change, s i g n a t u r e : 83B0 0 0 6 4 3 3 2 6 5 C7B204 } Fig 7 change 트랜잭션의구조 G 포크와투표 포크는 j 가서명한블록 b 1, b 2,, b j 가같은블록을이전블록으로주장할때발생합니다 (Figure 8) 이블록들은계정의상태에대해충돌을일으키며반드시해결되어야만합니다 오직계정의소유주만이자신의블록을서명하고계정 - 체인에넣을수있습니다 그렇기때문에포크는잘못된프로그래밍이나계정소유주의악의적인의도 ( 이중지불 ) 의결과일수밖에없습니다 Block i Block i + 1 Block i + 2 Block i + 2 Fig 8 둘또는그이상의서명된블록이같은 previous 블록을참고할때포크가발생합니다 이전블럭이왼쪽, 신규블록들이오른쪽에있습니다 포크가발견되면, 대리인은블록 ˆb i 를가리키는투표를자신의원장에생성하고네트워크에전파합니다 노드의투표인 w i 의가중치는해당노드를대리인으로지정한모든계정들잔고의합입니다 대리인노드는다른 M 개의온라인대리인들로부터들어오는투표들을 1 분간 4 회의투표기간동안누계를내어관찰하며, 이긴블록을승인합니다 (Equation 1) v(b j ) = M w i 1ˆbi=b j (1) i=1 b = arg max v(b j ) (2) b j 가장인기있는블록 b 가투표의대다수를차지하고노드의원장에유지됩니다 (Equation 2) 투표에서진블록은버려집니다 투표의결과로대리인이자신의원장에있는블록을교체하면, 대리인노드는새로운블록을높은시퀀스넘버로생성하고이에대해새로운투표를네트워크에전파하게됩니다 이것은대리인들이투표하는유일한시나리오입니다 어떤경우에는짧은네트워크접속문제가전파된블록이모든피어로부터받아들여지지않게할수있습니다 이계정으로부터나오는이이후의모든블록들은초기전파를보지못한피어들로부터무효로무시될것입니다 이블록을재전파하면남아있는피어들은수용할것이며, 이후블록들은자동적으로회수될것입니다 포크나유실된블록이발생하더라도, 오직트랜잭션에서참조된계정들만이영향을받습니다 네트워크의다른부분들은다른모든계정들의트랜잭션들을처리하면서진행합니다 H 작업증명 모든네가지트랜잭션유형은 work 필드를가지고있으며이필드는정확하게채워져야합니다 이 work 필드는트랜잭션생성자가이 work 필드는트랜잭션생성자가 receive/send/change 트랜잭션의 previous 필드또는 open 트랜잭션의계정필드에연결되어있는논스의해
5 시가특정임계값미만이되도록논스를계산할수있게합니다 비트코인과는달리 aiblocks 의 PoW 는단지 Hashcash 처럼스팸방지도구로만사용되며, 몇초정도면계산됩니다 [9] 트랜잭션이발송되면 previous 블록필드를알수있기때문에, 다음블록을위한 PoW 가미리계산될수있습니다 이는트랜잭션간의간격이 PoW 를계산하는시간보다큰동안에는트랜잭션이최종사용자에게즉각적으로처리되는것으로보이게합니다 I 트랜잭션검증 블록이유효하게간주되기위해서는다음의특성들을가져야합니다 : 1) 블록은아직원장에있지않아야합니다 ( 중복된트랜잭션 ) 2) 계정소유자에의해서명되어야합니다 3) 이전블록이계정 - 체인의헤드블록입니다 만약이전블록이존재하지만헤드블록이아니라면, 이것은포크입니다 4) 계정은반드시 open 블록을가지고있어야합니다 5) 계산된해시는 PoW 임계값요구사항을충족해야합니다 만약블록이 receive 블록이라면 source 블록해시가보류중인지, 즉아직취득되지않은블록인지확인합니다 만약 send 블록이라면, 잔액이이전잔고보다적어야합니다 V 공격방식 다른모든탈중앙화된암호화폐들과마찬가지로, aiblocks 도금전적이득또는시스템붕괴를목적으로하는악의적인집단의공격을받을수있습니다 이섹션에서우리는몇가지가능한공격시나리오와그러한공격의결과, 어떻게 aiblocks 의프로토콜이예방조치를취하는지설명합니다 A 블록갭동기화 IV-G 섹션에서우리는블록이적절하게전파되지않을수있고그결과로네트워크가그이후의블록들을무시하게되는경우를논의했습니다 만약노드가어떤블럭이카리키고있는이전블럭이없는것을발견했을때두가지선택이존재합니다 1) 악의적인쓰레기블럭일수있으므로해당블럭을무시한다 2) 다른노드에게재동기화를요청한다 재동기화의경우에재동기화가필요로하는트래픽증가를용이하게하기위해, 부트스트래핑노드와의 TCP 연결이반드시형성되어야합니다 하지만만약그블럭이실제로나쁜블럭이었다면, 그동기화는필요없는것이며불필요하게네트워크의트래픽을증가시키게됩니다 이것은네트워크증폭공격으로서비스거부의결과를가져옵니다 불필요한재동기화를피하기위해, 노드들은부트스트랩노드와연결을맺고동기화하기전에, 잠재적으로악의적인블록에대해특정수준의투표들을확인할때까지기다립니다 만약블록이충분한투표를받지못하면그블록은쓰레기데이터로가정할수있습니다 B 트랜잭션홍수 악의적인참여자는네트워크를포화시키려는목적으로자신이관리하는계정간에불필요하지만유효한트랜잭션을많이보낼수있습니다 트랜잭션수수료가없으므로그들은이런공격을끝없이계속할수있습니다 하지만각트랜잭션에필요한 PoW 때문에연산자원에상당한투자를하지않고서는악의적인공격자가생성할수있는트랜잭션의속도는제한됩니다 원장을부풀리기위한이러한공격하에있다손치더라도풀노드가아닌노드들은예전트랜잭션을자신들의체인에서잘라낼수있습니다 이는거의모든사용자들의스토리지사용량을이런공격으로부터고정시킵니다 C 시빌 (ybil) 공격 공격자는하나의컴퓨터에수백개의 aiblocks 노드를만들수도있습니다 하지만투표시스템은계정의잔고에기반하여가중치를가지기때문에, 네트워크에노드를추가하더라도공격자가추가적인투표를얻을수는없습니다 그러므로시빌공격으로는이점을얻을수없습니다 D 소액지불고격 페니지불공격은공격자가저장공간을낭비시키기위해극소량의금액을많은수의계정에보내는공격입니다 블록발행은 PoW 에의해비율이제한됩니다 그렇기때문에이는계정과트랜잭션의생성을어느정도제한하게됩니다 모든이력을보관하지않는노드들은통계적지표이하의유효하지않을것같은계정들을잘라낼수있습니다 마지막으로 aiblocks 는최소한의영구저장공간을사용하도록최적화되어있고, 하나의계정을추가적으로저장하기위해필요한공간은 open 블록 + 인덱싱 = 96B + 32B = 128B 에비례합니다 이는 1GB 로 8 백만페니지불공격을저장할수있다는계산이됩니다 만약노드가좀더공격적으로축약하려한다면, 액세스빈도의분포를계산하여자주사용되지않는계정을느린스토리지에맡길수있습니다 E 사전계산된 PoW 공격 계정의소유주가계정 - 체인에블록을추가하는유일한엔터티가되기때문에네트워크에블록들을전파아기전에순차적인블록들이 PoW 와함께계산될수있습니다 여기서공격자는오랜시간동안최소한의값을가진무수히많은순차적인블록들을생성할수있습니다 특정시점에공격자는다른노드들이가능한빨리처리하고응답할많은수의유효한블록들을네트워크에흘려보냄으로써서비스공격을할수있습니다 이것은 V-B 섹션에기술된트랜잭션홍수의진보된버전입니다 이런공격은잠시동안만동작하겠지만효과를높이기위해 >50% 과같은다른공격과함께진행될수있습니다 공격을완화하기위해트랜잭션속도제한과다른기술들을현재조사중입니다 F >50% 공격 aiblocks 에서합의의척도는잔고가중치투표시스템입니다 만약공격자가 50% 이상의투표파워를취득할수있다면, 네트워크가합의를일으켜시스템이파괴될수있습니다 공격자는네트워크서비스거부공격을
6 일으켜선량한노드들이투표하는것을막음으로써확보해야할잔고의양을낮출수있습니다 aiblocks 은이런공격을방지하기위해아래의방법들을사용합니다 1) 이런유형의공격에대한기본적인방어는투표가중치를시스템에대한투자와연결시키는것입니다 계정보유자는근본적으로자신의투자를보호하기위해정직성을유지할동기가생깁니다 원장을뒤집으려시도하는것은시스템전반적으로파괴적일수있으며, 자신들의투자를파괴할수있습니다 2) 이공격의비용은 aiblocks 의시가총액에비례합니다 PoW 시스템에서공격이성공할경우자금투자와비교하여부적절한통제력을부여하는기술이만들어질수있습니다 그리고이기술이공격이성공한후다른목적을가지게될수있습니다 aiblocks 에서공격을하기위한비용은시스템그자체와함께커지며, 공격이성공적이된다면공격에들어간투자는복구될수없습니다 3) 투표자의최대정족수를유지하기위한다음방어선은대리인투표입니다 연결이유로투표에안정적으로참여할수없는계정보유자는자신들의잔고의가중치로투표할수있는대리인을지명할수있습니다 대리인의수와다양성을최대화하는것은네트워크의회복력을증가시킵니다 4) aiblocks 에서포크는우연히일어나지않습니다 그러므로노드들은포크된블록을어떻게대응할지정책을결정할수있습니다 공격자가아닌계정이블록포크로인해취약해지는유일한때는공격자계정으로부터잔액을받을때입니다 블록포크로부터안전하고자하는계정들은포크를만드는계정들로부터블록을받는것을다소기다리거나, 또는전혀받지않는것을선택할수있습니다 수신자는또한다른계정들을격리하기위해, 의심스러운계정으로부터자금을받는별도의계정들을만들수도있습니다 5) 아직구현되지않은최종방어선은블록고정입니다 aiblocks 는투표를통해블록포크를확정하는데에많은시간을할애합니다 노드들은블록들이일정시간이지나면롤백되지않도록고정하도록설정될수있습니다 네트워크는모호한포크들을방지하기위해빠르게체결하는데에집중함으로써충분히안전해집니다 더복잡한버전의 > 50% 공격은그림 9 에상세히기술되어있습니다 Offline 은지명되었지만투표를위한온라인상태가아닌대리노드들의비율입니다 take 는공격자가투표하는투자의양입니다 Active 는온라인상태의대리노드들이며프로토콜에따라투표합니다 공격자는네트워크서비스거부공격으로다른투표자들을공격함으로써박탈해야할지분의양을상쇄할수있습니다 만약이공격이지속될수있다면, 공격받은대리노드들은비동기화될것이고, Unsync 로표시됩니다 마지막으로공격자는이전대리노드들이자신들의원장을재동기화하는도중에새로운대리노드들에서비스거부공격을함으로써상대적인투표권한을높일수있습니다 이것은 Attack 으로표현됩니다 만약공격자가이런환경을조합하여 take >Active 를이룰수있다면, 공격자는자신들의지분을이용하여원 Offline Unsync Attack Active take Fig 9 51% 공격요구사항을낮출수있는잠재적투표구성 장에대한투표를성공적으로뒤집을수있습니다 이런유형의공격이어느정도의비용이들것인지는다른시스템의시장규모를추산하여예상할수있습니다 만약 33% 의대리노드들이오프라인이거나 Do 공격을받는다고추정하면, 공격자는투표를이용하여시스템을공격하기위해서전체시장규모의 33% 를구매해야합니다 G 부트스트랩오염 공격자가오래된잔고가있는개인키를오래가지고있을수록, 그시점에존재했던대리인이존재하지않을확률이높아지는데, 왜냐하면잔액이나대리인이새로운계정으로옮겨졌을것이기때문입니다 이것은한노드가공격자들이그시점의다른대리인들에비해투표지분의정족수를가지고있던오래된네트워크상태에서부트스트랩되면공격자들은그새로운노드에대한결정을흔들수있게된다는것을의미합니다 만약이새로운사용자가공격노드가아닌다른노드와상호작용하려한다면, 그들은다른헤드블록을가지고있기때문에그트랜잭션들은모두거부될것입니다 결과적으로악의적인노드들이네트워크의새로운노드들에게잘못된정보를제공함으로써시간을낭비하게할수있습니다 이를막기위해서노드들은계정과알려진올바른블록헤드에대한초기데이터베이스와짝지워질수있습니다 이는제네시스블록까지데이터베이스를다운받고교체하는것입니다 다운로드가최신에가까워질수록이런공격에정확하게대항할확률이높아집니다 결국이공격은노드들이초기시작할때쓰레기데이터를공급하는이상의악영향은없는데, 이런노드들은최신데이터베이스를가진어떤노드와도거래할수없기때문입니다 VI 구현 현재리퍼런스구현체는 C++ 로구현되어있으며 2014 년부터 Github 에공개되고있습니다 [10] A 설계특징 aiblocks 구현은이논문에개요가서술된아키텍처표준에부합합니다 추가적인규격은여기에기술합니다 1) 서명알고리즘 : aiblocks 는수정된 ED25519 엘립틱커브알고리즘과 Blake2b 해싱을모든디지털서명에사용하고있습니다 [11] ED25519 는빠른서명과검증, 그리고높은보안성때문에선택하였습니다 2) 해싱알고리즘 : 해싱알고리즘은오직네트워크스팸을막기위해서만사용되기때문에마이닝기반의암호화폐에비해알고리즘의선택은중요성이덜합니다 우리의구현체는 Blake2b 를블록콘텐츠에대한다이제스트알고리즘으로사용합니다 [12] 3) 키유도함수 : 리퍼런스월렛에키들은패스워드로암호화되며패스워드는 AIC 크래킹시도로부터보호하기위해키파생기능을통해제공됩니다 현재 Argon2 [13] 는탄력성있는키유도함수를만드는것을목표로하는유일한공개적인경쟁에서승리한알고리즘입니다
7 4) 블록간격 : 각계정은고유의블록체인을가지기때문에블록갱신은네트워크의상태에비동기적으로수행될수있습니다 그렇기때문에블록생성간격은없으며, 트랜잭션들은즉시발행될수있습니다 5) UDP 메시지프로토콜 : 우리의시스템은가능한최소한의컴퓨팅자원을사용하여무기한으로운영되도록설계되었습니다 시스템의모든메시지는상태를가지지않으며하나의 UDP 패킷에들어가도록설계되었습니다 또한간헐적인연결을사용하는경량피어가단기 TCP 연결을재수립하지않고도네트워크에쉽게참여할수있습니다 TCP 는오직새로운피어들이블록체인을대량으로부트스트랩하는경우에만사용됩니다 노드들은자신들의트랜잭션이네트워크에수신되었는지다른노드들로부터의트랜잭션전파트래픽을관찰함으로써알수있는데, 자신에게여러복사본이돌아오는것을볼수있을것이기때문입니다 B IPv6 와멀티캐스트 연결이없는 UDP 상에구축하는것은추후의구현체가전통적인트랜잭션흐름과투표전파를대신하여 IPv6 멀티캐스트를사용하는것을허용합니다 이는네트워크의대역소모를줄이고노드들이발전해나가는데있어더많은정책유연성을제공합니다 C 성능 이글을작성하는시점에, 4 백 2 십만개의트랜잭션들이 aiblocks 네트워크에서처리되었고, 17GB 의블록체인크기를만들었습니다 트랜잭션시간은수초단위로측정됩니다 일반적인 D 에서구동되는현재의리퍼런스구현체는초당 1 만트랜잭션이상을처리할수있으며주로 IO 에제약을받습니다 VII 자원사용 여기서는 aiblocks 노드가사용하는자원을개략적으로설명합니다 추가적으로특별한사용사례에서의자원사용을줄이는방법에대해서검토합니다 축소된노드는일반적으로경량, 축약또는단순지불검증 (PV) 노드라고불립니다 A 네트워크 네트워크활동량은네트워크의건강함에네트워크가얼마나기여하는지에달려있습니다 The amount of network activity depends on how much the network contributes towards the health of a network 1) 대리인노드 : 대리인노드는다른대리인들로부터의투표트래픽을감시하고자신의투표를발행하기때문에최대한의네트워크자원을필요로합니다 2) 무신뢰노드 : 무신뢰노드는대리인노드와비슷하지만오직감시만합니다 이노드는대리인계정개인키를가지고있지않으며자신의투표를발행하지도않습니다 3) 신뢰노드 : 신뢰하는노드는올바르게합의를수행하기위해신뢰하는하나의대리인노드로부터의투표트래픽을감시합니다 이는이노드로가는대리인들로부터의투표트래픽의양을줄입니다 4) 경량노드 : 경량노드역시신뢰하는노드로최소한의네트워크사용만을허용하며관심있는계정의트래픽만을감시합니다 5) 부트스트랩노드 : 부트스트랩노드는온라인상태로전환하는노드들에대해원장의일부또는전부를제공합니다 이는고급흐름제어가필요한많은양의데이터가관련되어있기때문에 UDP 가아닌 TCP 연결을통해수행됩니다 B 디스크용량 사용자요구에따라, 다른노드구성은다른저장장치요구사항을필요로합니다 1) 전체이력 : 모든트랜잭션에대한전체이력기록을보관하려는노드는최대한의저장공간을필요로합니다 2) 현재 : 블록으로누적된잔액을유지하는설계로인해, 노드는합의에참여하기위해각계정에대한최신또는헤드블록만유지하면됩니다 노드가전체이력을보관하는데관심이없다면헤드블록만보관하도록선택할수있습니다 3) 경량 : 라이트노드는로컬원장데이터를보관하지않고네트워크에참여하여, 관심있는계정의활동을관찰하거나또는선택적으로, 보유한개인키로새트랜잭션을만듭니다 C CPU 1) 트랜잭션생성 : 새로운트랜잭션생성에관심이있는노드는 aiblocks 의속도제한메커니즘을통과하기위해작업증명논스를생성해야합니다 다양한하드웨어에서의계산은부록 A 에서벤치마크되어있습니다 2) 대리인 : 대리인은블록, 투표에대한서명을검증하고합의에참여할자체서명을생성해야합니다 대리인노드의 CPU 리소스양은트랜잭션생성보다현저히적으며최신컴퓨터의단일 CPU 에서작동해야합니다 3) 감시자 : 감시자노드는자신의투표를생성하지않습니다 서명생성에대한부하가적기때문에 CPU 요구사항은대리인노드실행과거의동일합니다 VIII 결론 이백서에서우리는참신한블록래티스구조와위임된지분증명투표를활용하는무신뢰, 무수수료, 저지연암호화폐를위한프레임워크를제시하였습니다 네트워크는최소한의자원을필요로하며고성능의채굴하드웨어를필요로하지않고많은수의트랜잭션을처리할수있습니다 이모든것들은각계정이개별적인블록체인을가지고접근문제와글로벌한자료구조의비효율성을제거함으로서달성됩니다 우리는시스템에대해가능한공격방법을식별하고, aiblocks 가어떻게이러한형태의공격들에내성을가지는지에대한논증을제시하였습니다 Appendix A PoW 하드웨어벤치마크 앞서언급하였듯이, aiblocks 에서 PoW 는네트워크스팸을줄이기위해사용됩니다 우리의노드구현은 OpenCL 호환 GPU 의강점을활용할수있는가속을제공합니다 표 I 는실제다양한하드웨어의실제벤치마크비교를제공합니다 현재 PoW 임계값은고정되어있으나평균적인연산능력이진보함에따라적응형임계값이구현될수도있습니다
8 TABLE I 하드웨어 PoW 성능 디바이스 초당트랜잭션 Nvidia Tesla V100 (AW) 64 Nvidia Tesla P100 (Google,Cloud) 49 Nvidia Tesla K80 (Google,Cloud) 164 AMD X 470 OC 159 Nvidia GTX 1060 3GB 125 Intel Core i7 4790K AVX2 033 Intel Core i7 4790K,WebAssembly (Firefox) 014 Google Cloud 4 vcores 014-016 AM64 server 4 cores (caleway) 005-007 감사 이백서의편집과서식설정을해준 Brian Pugh 에게감사를표합니다 eferences [1] Nakamoto, Bitcoin: A peer-to-peer electronic cash system, 2008 [Online] Available: http://bitcoinorg/bitcoinpdf [2] Bitcoin median transaction fee historical chart [Online] Available: https://bitinfochartscom/comparison/ bitcoin-median_transaction_feehtml [3] Bitcoin average confirmation time [Online] Available: https://blockchaininfo/charts/avg-confirmation-time [4] Bitcoin energy consumption index [Online] Available: https://digiconomistnet/bitcoin-energy-consumption [5] King and Nadal, Ppcoin: Peer-to-peer cryptocurrency with proof-of-stake, 2012 [Online] Available: https://peercoinnet/assets/paper/peercoin-paperpdf [6] C LeMahieu, aiblocks distributed ledger network, 2014 [7] Y ibero and D aissar, Dagcoin whitepaper, 2015 [8] Popov, The tangle, 2016 [9] A Back, Hashcash - a denial of service counter-measure, 2002 [Online] Available: http://wwwhashcashorg/papers/ hashcashpdf [10] C LeMahieu, aiblocks, 2014 [Online] Available: https: //githubcom/clemahieu/raiblocks [11] D J Bernstein, N Duif, T Lange, P hwabe, and B-Y Yang, High-speed high-security signatures, 2011 [Online] Available: http://ed25519crypto/ed25519-20110926pdf [12] J-P Aumasson, Neves, Z Wilcox-O Hearn, and C Winnerlein, Blake2: impler, smaller, fast as md5, 2012 [Online] Available: https://blake2net/blake2pdf [13] A Biryukov, D Dinu, and D Khovratovich, Argon2: The memory-hard function for password hashing and other applications, 2015 [Online] Available: https://password-hashingnet/argon2-specspdf