肖大龍 張敬偉 楊青 周婭
摘要:社區(qū)貢獻(xiàn)貨幣化是促進(jìn)社區(qū)發(fā)展的一個(gè)途徑.在互聯(lián)網(wǎng)上已實(shí)現(xiàn)的方式是平臺(tái)的掌控者來(lái)操控社區(qū)代幣(私人或機(jī)構(gòu)發(fā)行的貨幣)的分配和使用,這種方式阻礙了社區(qū)的發(fā)展.本文針對(duì)這一問(wèn)題提出了一種激勵(lì)社區(qū)人員做出貢獻(xiàn)的方法.主要分為代幣分配、投票、代幣交易、以代幣為押金基礎(chǔ)和以投票為標(biāo)準(zhǔn)的社區(qū)仲裁.它使社區(qū)貢獻(xiàn)和加密貨幣相互轉(zhuǎn)化,在社區(qū)中持有的代幣和做出的貢獻(xiàn)呈正相關(guān),能夠很好地表達(dá)社區(qū)中貢獻(xiàn)的情況.社區(qū)中的投票結(jié)果體現(xiàn)了社區(qū)的意愿.押金模式為代幣提供了供應(yīng)需求.最后,對(duì)智能合約中方法的gas使用的情況做了統(tǒng)計(jì),結(jié)果表明gas的平均花費(fèi)在70000左右,該方法花費(fèi)較低.
關(guān)鍵詞:區(qū)塊鏈;智能合約;社區(qū);投票
中圖分類(lèi)號(hào):TP399
文獻(xiàn)標(biāo)志碼:A
文章編號(hào):1000-5641(2020)06-0082-08
0引言
具有相同目標(biāo)的人在一起組成了社區(qū).互聯(lián)網(wǎng)的出現(xiàn)解決了遠(yuǎn)距離信息交流的問(wèn)題,又讓社區(qū)有了新的表達(dá)方式,如百度貼吧、CSDN等.但是這種解決方案并不是完美的,它有一些不可忽視的缺陷.現(xiàn)有社區(qū)設(shè)計(jì)了級(jí)別、權(quán)限、積分和代幣來(lái)激勵(lì)社區(qū)人員做出貢獻(xiàn).這種設(shè)計(jì)由系統(tǒng)的掌控者來(lái)分配和操控.他們可以根據(jù)自己的意愿來(lái)修改數(shù)據(jù)從而竊取大家在此社區(qū)上做出的貢獻(xiàn),例如,百度貼吧被當(dāng)作商品賣(mài)給商人,CSDN中的積分對(duì)于某些人來(lái)說(shuō)是無(wú)限的.這種方式會(huì)減弱社區(qū)中的人對(duì)社區(qū)的貢獻(xiàn)意愿,限制了社區(qū)的進(jìn)一步發(fā)展.
隨著比特幣的成功,人們認(rèn)識(shí)到區(qū)塊鏈?zhǔn)且环N可以在互聯(lián)網(wǎng)實(shí)現(xiàn)去中心化的技術(shù).這項(xiàng)技術(shù)首先應(yīng)用于金融領(lǐng)域,被當(dāng)作一般等價(jià)物——貨幣.隨著以太坊區(qū)塊鏈的出現(xiàn),在區(qū)塊鏈上部署圖靈完備的程序成為可能.此外,以太坊社區(qū)還提供了一套能開(kāi)發(fā)去中心化應(yīng)用的工具,提出了Dapp的概念,可以使用Web瀏覽器和插件對(duì)以太坊區(qū)塊鏈進(jìn)行交互.本文選擇以太坊區(qū)塊鏈,它有以下優(yōu)點(diǎn):①它本身利用POW算法來(lái)為平臺(tái)提供去中心化保障.②在其平臺(tái)上運(yùn)行了數(shù)百萬(wàn)份的智能合約,說(shuō)明它的技術(shù)已經(jīng)獲得認(rèn)可.③它提供各種代幣標(biāo)準(zhǔn),其中ERC20代幣標(biāo)準(zhǔn)符合我們的要求.
Steemit(社交媒體平臺(tái))主要解決以社交媒體為基礎(chǔ)的經(jīng)濟(jì)體中信息采用和貨幣化的主要障礙(https://steem.com/).它把得到的利益分配給了做出貢獻(xiàn)的人,做出貢獻(xiàn)的方式有:保障數(shù)字貨幣價(jià)格平穩(wěn)、寫(xiě)文章、寫(xiě)評(píng)論、提供注意力等.本文的設(shè)計(jì)就借鑒了Steemit的相關(guān)思想——應(yīng)該把社區(qū)獲得的利益重新分配回社區(qū)。
本文的主要貢獻(xiàn)如下:
(1)找到一種社區(qū)中貢獻(xiàn)一代幣一需求相互轉(zhuǎn)換的方法,用來(lái)激勵(lì)社區(qū)人員做出貢獻(xiàn).
(2)對(duì)該方法在以太坊區(qū)塊鏈平臺(tái)利用智能合約進(jìn)行了實(shí)現(xiàn).
(3)對(duì)智能合約在以太坊區(qū)塊鏈的運(yùn)行成本進(jìn)行了分析并給出了結(jié)論,對(duì)區(qū)塊鏈和智能合約的安全性進(jìn)行了檢查.
1相關(guān)工作
1.1區(qū)塊鏈技術(shù)與其應(yīng)用
區(qū)塊鏈技術(shù)自從被提出后,一直是研究熱點(diǎn).區(qū)塊鏈一個(gè)重要的部分是存儲(chǔ)交易數(shù)據(jù),所以區(qū)塊鏈技術(shù)可以被認(rèn)為是一種特殊的分布式數(shù)據(jù)庫(kù),它的特別之處在于所存儲(chǔ)的數(shù)據(jù)具有防篡改的能力.根據(jù)進(jìn)入時(shí)是否需要許可,區(qū)塊鏈分為公有區(qū)塊鏈和聯(lián)盟區(qū)塊鏈.比較著名的公有區(qū)塊鏈?zhǔn)潜忍貛拧⒁蕴缓虴OS(https://whitepaperdatabase.com/eos-whitepaper/).他們一般被用于數(shù)字資產(chǎn)和智能合約平臺(tái).聯(lián)盟鏈主要應(yīng)用于企業(yè)之間,主要解決不同機(jī)構(gòu)間由于數(shù)據(jù)的差異引起爭(zhēng)議時(shí),需要人工對(duì)賬或由中介機(jī)構(gòu)來(lái)解決數(shù)據(jù)不一致的問(wèn)題.聯(lián)盟鏈降低了結(jié)算時(shí)間和減少了交易費(fèi)用.
近年來(lái),大量的專(zhuān)家和學(xué)者對(duì)區(qū)塊鏈進(jìn)行了應(yīng)用研究.錢(qián)衛(wèi)寧等人在區(qū)塊鏈技術(shù)的架構(gòu)方面做出了研究,并提出在區(qū)塊鏈上進(jìn)行可信的數(shù)據(jù)管理問(wèn)題和方法.蔡維德等人針對(duì)區(qū)塊鏈技術(shù)和應(yīng)用層面,提出了賬戶(hù)區(qū)塊鏈和交易區(qū)塊鏈雙鏈模型.Hawk針對(duì)智能合約中的交易隱私問(wèn)題,提出了一種分布式的智能合約系統(tǒng),實(shí)現(xiàn)了交易隱私.譚海波利用智能合約和星際文件提出了一種基于區(qū)塊鏈的檔案數(shù)據(jù)保護(hù)與共享方法.
1.2智能合約與其應(yīng)用
智能合約是由尼克薩博提出的,并將其定義為“一組以數(shù)字形式規(guī)定的承諾,包括在其承諾中履行的協(xié)議”.比特幣提供的腳本語(yǔ)言可以編寫(xiě)無(wú)法更改的程序,但是由于停機(jī)問(wèn)題的限制,它削弱了程序的表達(dá)能力.以太坊提供了一種圖靈完備的編程語(yǔ)言解決了這個(gè)問(wèn)題,正是因?yàn)檫@些原因,使基于區(qū)塊鏈的復(fù)雜應(yīng)用成為可能,使其在數(shù)字支付、金融資產(chǎn)處置、云計(jì)算、物聯(lián)網(wǎng)、共享經(jīng)濟(jì)等方面擁有廣闊的應(yīng)用前景.
近年來(lái),很多領(lǐng)域都使用智能合約進(jìn)行了進(jìn)一步的研究.范吉利針對(duì)在共享經(jīng)濟(jì)下對(duì)分布式交易管理的需求,利用以太坊智能合約構(gòu)建了物品共享服務(wù)交易平臺(tái).徐建針對(duì)在醫(yī)療中記錄授權(quán)煩瑣、記錄分享效率低下和身份驗(yàn)證困難的問(wèn)題,將非對(duì)稱(chēng)加密技術(shù)和多方協(xié)作應(yīng)用到區(qū)塊鏈構(gòu)成的點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,實(shí)現(xiàn)了醫(yī)療記錄跨域分享的可追蹤、數(shù)據(jù)的不可篡改和身份驗(yàn)證的簡(jiǎn)化.
1.3互聯(lián)網(wǎng)社區(qū)經(jīng)濟(jì)和去中心化應(yīng)用
互聯(lián)網(wǎng)上的社區(qū)經(jīng)濟(jì)狹義上講是平臺(tái)的貢獻(xiàn)者促進(jìn)了平臺(tái)的發(fā)展,平臺(tái)用報(bào)酬回饋給貢獻(xiàn)者.目前,越來(lái)越多的互聯(lián)網(wǎng)平臺(tái)把利潤(rùn)回報(bào)給它的貢獻(xiàn)者.例如:今日頭條就采用了優(yōu)秀作者獎(jiǎng)勵(lì)、流量廣告分成等手段.直播平臺(tái)更是用高價(jià)格來(lái)拉攏各大平臺(tái)上的大咖.微信、快手、抖音等應(yīng)用也采取了相應(yīng)的措施.
現(xiàn)在擁有代幣的去中心化應(yīng)用,都有自己的使用需求,并且根據(jù)使用需求設(shè)計(jì)自己的規(guī)則和代幣.并用代幣作為激勵(lì)或者憑證,形成了一個(gè)貢獻(xiàn)-代幣-需求的閉環(huán).例如,Augur宣稱(chēng)可以用群體智慧作為預(yù)言機(jī),貢獻(xiàn)是群體預(yù)測(cè)一件事情發(fā)生的狀況,代幣是如果你預(yù)測(cè)正確會(huì)獎(jiǎng)勵(lì)代幣,需求是發(fā)起一件事情預(yù)測(cè)或者預(yù)測(cè)某件事情要使用代幣.
本文所提出的方法就是抽取出互聯(lián)網(wǎng)社區(qū)的激勵(lì)部分并找到一個(gè)需求,使它形成一個(gè)貢獻(xiàn)-代幣-需求的閉環(huán),最后在區(qū)塊鏈上進(jìn)行實(shí)現(xiàn).本文提出的方法和其余兩種方法的對(duì)比如表1所示.
2問(wèn)題分析
本文的問(wèn)題是讓社區(qū)人員相信他們?yōu)樯鐓^(qū)做出的貢獻(xiàn)所轉(zhuǎn)化的價(jià)值會(huì)被他們所得到.要想解決上面這個(gè)問(wèn)題就有怎樣獲得信任、什么是貢獻(xiàn)和怎樣讓社區(qū)人員得到價(jià)值這三個(gè)挑戰(zhàn)必須解決.面對(duì)第一個(gè)挑戰(zhàn),本文把關(guān)鍵代碼用智能合約的方式進(jìn)行編寫(xiě)并且部署在以太坊區(qū)塊鏈上,使用區(qū)塊鏈的不可更改性來(lái)達(dá)到可信的目的.面對(duì)的第二個(gè)挑戰(zhàn),貢獻(xiàn)怎么體現(xiàn)?本文分兩個(gè)方面來(lái)看待貢獻(xiàn),主觀方面和客觀方面.主觀方面認(rèn)為社區(qū)人員如果認(rèn)可你做的事情會(huì)對(duì)你投票,用票數(shù)來(lái)衡量你做出貢獻(xiàn)的大小;客觀方面認(rèn)為只要有特定的使用記錄就代表你對(duì)社區(qū)做出了貢獻(xiàn).本文使用了代幣來(lái)體現(xiàn)貢獻(xiàn).第三個(gè)挑戰(zhàn)需要為代幣找到供應(yīng)需求.除了第一個(gè)挑戰(zhàn)是使用區(qū)塊鏈平臺(tái)的特性來(lái)實(shí)現(xiàn)的,接下來(lái)的兩個(gè)挑戰(zhàn)需要在技術(shù)上進(jìn)行進(jìn)一步的分析.本文設(shè)計(jì)了4個(gè)部分,分別為代幣、分配模式、投票和鏈下交易.在代幣部分中,代幣被認(rèn)為是一個(gè)獨(dú)立相等個(gè)體并且可以進(jìn)行轉(zhuǎn)賬、挖掘和銷(xiāo)毀.在分配模式上分為4種方式,分別是簽到分配、分批分配、TopN分配和隨機(jī)分配.在投票模塊上對(duì)3種方式進(jìn)行投票,分別是代幣分配方式、代幣獲得候選人和鏈下交易的爭(zhēng)端.在鏈下交易模塊會(huì)對(duì)代幣進(jìn)行鎖定、記錄交易、賣(mài)家取回鎖定代幣和買(mǎi)家取走賣(mài)家代幣.代幣、投票的前兩個(gè)部分和分配方式對(duì)應(yīng)的是第2個(gè)挑戰(zhàn).貢獻(xiàn)的主觀方面用分批分配和TopN分配兩個(gè)方法來(lái)體現(xiàn),客觀方面是用簽到分配和隨機(jī)分配來(lái)體現(xiàn).第3個(gè)挑戰(zhàn)用鏈下交易解決.更進(jìn)一步的細(xì)節(jié)將在第4章進(jìn)行論述.
3整體架構(gòu)
3.1系統(tǒng)架構(gòu)
如圖1所示,本文提出的社區(qū)貢獻(xiàn)激勵(lì)方法的具體實(shí)現(xiàn)由應(yīng)用層、服務(wù)層和中間件組成.應(yīng)用層分為4個(gè)模塊,劃分了不同的角色和職能,具體會(huì)在3.2節(jié)詳述.服務(wù)層為區(qū)塊鏈上的智能合約,Web3是瀏覽器和區(qū)塊鏈交互的中間件,代碼邏輯會(huì)寫(xiě)在智能合約上,經(jīng)過(guò)編譯后部署到區(qū)塊鏈上.系統(tǒng)的事務(wù)在以太坊網(wǎng)絡(luò)中傳輸,最后由網(wǎng)絡(luò)中的節(jié)點(diǎn)達(dá)成共識(shí),寫(xiě)到相連的區(qū)塊中.其中應(yīng)用層使用前端來(lái)為用戶(hù)提供接口調(diào)用.
3.2合約類(lèi)圖
合約主要利用以太坊區(qū)塊鏈上部署的智能合約有不可篡改、圖靈完備、永不停機(jī)的特性.設(shè)計(jì)的智能合約體系由社區(qū)貨幣合約、挖礦(在設(shè)計(jì)上本文用“分配”這個(gè)術(shù)語(yǔ)代替挖礦)合約、投票合約、鏈下交易記錄合約組成.代幣合約擁有一個(gè)地址向一個(gè)地址轉(zhuǎn)賬、銷(xiāo)毀一定數(shù)量代幣、挖掘出一定數(shù)量代幣的方法.挖礦合約實(shí)現(xiàn)了向社區(qū)人員分配代幣和選擇當(dāng)前分配策略的邏輯,一共有4種分配策略,分別是簽到、分批、按比例、隨機(jī).投票合約有向地址投票、向分配策略投票和清除投票數(shù)據(jù)的方法.鏈下交易合約有鎖定社區(qū)代幣、記錄交易、產(chǎn)生爭(zhēng)端、對(duì)爭(zhēng)端進(jìn)行投票、取回代幣和取回賠償代幣的方法.智能合約和普通類(lèi)圖有所區(qū)別,本文對(duì)類(lèi)圖有所更改,智能合約的類(lèi)圖如圖2所示.
4方法設(shè)計(jì)
4.1社區(qū)代幣
代幣是以太坊上的一個(gè)重要應(yīng)用.這里使用代幣的兩個(gè)功能:一種是它的實(shí)用功能,鏈下交易的前提是使用代幣作為押金;另一種是效益功能,它代表為社區(qū)做出的貢獻(xiàn)多少,可以作為投票候選人的參考.本文系統(tǒng)中的代幣遵循了ERC20標(biāo)準(zhǔn),符合它標(biāo)準(zhǔn)的代幣擁有名稱(chēng)(name)、別名(symbol)、代幣數(shù)值精確程度(decimals)、發(fā)行代幣總量(totalSupply)、根據(jù)地址返回余額、轉(zhuǎn)賬、批準(zhǔn)轉(zhuǎn)賬、向自己轉(zhuǎn)賬等屬性及操作.由于這部分涉及代幣,需要經(jīng)過(guò)嚴(yán)格的檢查和測(cè)試,系統(tǒng)采用了OpenZeppelin給出經(jīng)過(guò)反復(fù)檢查安全的代碼,進(jìn)行了上述工作.
4.2社區(qū)代幣分配
每一個(gè)擁有以太坊賬戶(hù)的用戶(hù)都可以參與代幣的分配過(guò)程.接下來(lái)詳細(xì)介紹這4種代幣分配策略.第1種策略為簽到分配,該策略認(rèn)為認(rèn)可社區(qū)的人不多,那么只要簽到就可以拿到代幣,第2種策略為分批分配,該策略認(rèn)為有一部分人會(huì)對(duì)社區(qū)的發(fā)展做出貢獻(xiàn),并且前N名獲得的貢獻(xiàn)是相等的,社區(qū)人員會(huì)向這些人員投票,每個(gè)投票的人擁有的票數(shù)根據(jù)擁有的代幣決定,得票最多的前N個(gè)都會(huì)得到等量的代幣.第3種策略為T(mén)opN分配,得到的代幣等于得到的投票乘以系統(tǒng)本身比例,其余部分等同第2種策略.第4種策略為隨機(jī)分配,該策略認(rèn)為現(xiàn)階段的主要任務(wù)是帶來(lái)人氣,所有地址會(huì)在特定時(shí)間段內(nèi)得到隨機(jī)數(shù)量的代幣.分配策略是由簽到分配開(kāi)始,社區(qū)人員可以利用投票來(lái)自由切換分配策略.分批分配具體如協(xié)議1所示,區(qū)塊鏈會(huì)存儲(chǔ)系統(tǒng)變量和當(dāng)前狀態(tài)變量,存儲(chǔ)在系統(tǒng)內(nèi)的變量如投票閾值、地址挖礦刷新時(shí)間等,區(qū)塊鏈狀態(tài)變量包括調(diào)用合約地址、當(dāng)前時(shí)間等.本方法會(huì)根據(jù)得票數(shù)值和挖礦時(shí)間進(jìn)行判斷,目的是選擇出票數(shù)的前N名,而且他們只能在一定時(shí)間段得到一次代幣.如果條件滿(mǎn)足就得到代幣,之后更新挖礦的刷新時(shí)間.其他3種分配方式除在約束條件上不同,其他方面均類(lèi)似.
4.3社區(qū)投票
本文選擇投票來(lái)解決社區(qū)的方向性問(wèn)題.社區(qū)會(huì)對(duì)3件事進(jìn)行投票,第1是分配策略的切換;第2是對(duì)做出貢獻(xiàn)的地址進(jìn)行投票;第3是對(duì)鏈下交易爭(zhēng)端進(jìn)行投票.其中對(duì)候選人投票的協(xié)議2如后文所示.區(qū)塊鏈會(huì)存儲(chǔ)變量,并會(huì)在部署時(shí)確定,如投票的刷新時(shí)間.本算法首先對(duì)合約調(diào)用者的投票刷新時(shí)間進(jìn)行判斷,在一定時(shí)間內(nèi)每個(gè)地址只能投票一次,然后會(huì)將候選人的票數(shù)進(jìn)行累加,累加的票數(shù)是根據(jù)合約調(diào)用者在社區(qū)的代幣決定的,接下來(lái)會(huì)記錄候選人地址,以便可以在進(jìn)行下一階段時(shí)清除票數(shù),最后將合約調(diào)用者的投票時(shí)間進(jìn)行更新.其他兩種方式只改變了進(jìn)行投票的對(duì)象,剩余部分都沒(méi)有改變.這里不再贅述.
4.4交易數(shù)據(jù)的記錄和社區(qū)仲裁
社區(qū)產(chǎn)生的代幣一個(gè)實(shí)用的功能是將它作為鏈下交易的押金.當(dāng)有人向社區(qū)出售產(chǎn)品時(shí),會(huì)在合約上鎖定確定數(shù)目的代幣,當(dāng)產(chǎn)生交易時(shí),合約會(huì)記錄產(chǎn)生交易雙方的地址.如果買(mǎi)方對(duì)交易過(guò)程產(chǎn)生不滿(mǎn),擁有產(chǎn)生交易爭(zhēng)執(zhí)的權(quán)利,這時(shí)社區(qū)人員就會(huì)投票.合約具有投票閾值.如果票數(shù)大于閾值,就會(huì)允許買(mǎi)家得到賣(mài)家的押金,如果沒(méi)有超過(guò)閾值,則認(rèn)為此爭(zhēng)端賣(mài)方錯(cuò)誤可以接受,這時(shí)買(mǎi)家得不到賣(mài)家的押金.當(dāng)賣(mài)家不想再產(chǎn)生交易和交易都已經(jīng)完成時(shí),可以取回自己之前向合約鎖定的代幣.鏈下交易的流程如圖3所示.
5方法實(shí)現(xiàn)
方法的具體實(shí)現(xiàn)分為公有區(qū)塊鏈智能合約的開(kāi)發(fā)和前端應(yīng)用的開(kāi)發(fā).合約開(kāi)發(fā)部分對(duì)于以太坊來(lái)說(shuō)應(yīng)該是一個(gè)整體(一個(gè)合約),這樣就可以通過(guò)一個(gè)以太坊地址來(lái)訪(fǎng)問(wèn)所有可訪(fǎng)問(wèn)的變量和方法,簡(jiǎn)化了調(diào)用外部合約的復(fù)雜關(guān)系.前端開(kāi)發(fā)部分雖然是對(duì)一個(gè)合約進(jìn)行訪(fǎng)問(wèn),但是做了模塊化的處理,這樣外部進(jìn)行訪(fǎng)問(wèn)時(shí)可以分模塊進(jìn)行.智能合約部分使用Solidity語(yǔ)言開(kāi)發(fā),并使用truffle框架進(jìn)行編譯測(cè)試.前端應(yīng)用部分,本文使用Vue進(jìn)行開(kāi)發(fā),并通過(guò)web3.js和abi對(duì)智能合約進(jìn)行調(diào)用.系統(tǒng)中的代碼詳見(jiàn)https://gitee.com/xiaodalong1130/community.
6分析和評(píng)估
6.1運(yùn)行成本分析
根據(jù)EthGasStation的數(shù)據(jù)統(tǒng)計(jì),在本文撰寫(xiě)時(shí)(2019年5月)以太坊調(diào)用智能合約的平均費(fèi)用為20 Gwei,折合人民幣約0.7元。在實(shí)際情況中,調(diào)用合約的費(fèi)用(Cost=Gas uesd×Gas price)按使用的操作碼和存儲(chǔ)的字節(jié)數(shù)計(jì)算.在合約調(diào)用中Gas price的價(jià)格是動(dòng)態(tài)變化的,而Gas used是不變的.為了了解合約中方法具體使用的gas值,本文測(cè)試了主要方法的gas消耗值.具體如圖4所示.其中voteToCandidate、lockToken和recordTranscation在合約中由于涉及多個(gè)變量的寫(xiě)入操作,所以gas消耗值要大于平均水平.其中,voteToCandidate是系統(tǒng)的主要功能.但是卻消耗了大量的gas值.針對(duì)這一情況設(shè)置了代幣獎(jiǎng)勵(lì).對(duì)每個(gè)投票的人給予代幣作為投票的回報(bào),希望能夠增加社區(qū)人員投票的動(dòng)力.對(duì)于lockToken和recordTranscation等方法,這些操作的收益者是個(gè)人,本文不設(shè)置激勵(lì)措施.運(yùn)行成本會(huì)受一些應(yīng)用場(chǎng)景的限制,所以具體應(yīng)用場(chǎng)景適用于社區(qū)產(chǎn)生的價(jià)值大于運(yùn)行成本.
6.2性能和安全性分析
智能合約調(diào)用時(shí)間的實(shí)際情況是根據(jù)塊的確認(rèn)時(shí)間決定的.但是為了測(cè)試智能合約的運(yùn)行性能,本文使用truffle編寫(xiě)了測(cè)試代碼,并記錄了方法的執(zhí)行時(shí)間.具體如圖5所示,方法大都在0.2s內(nèi)做出回應(yīng).其中voteCandidate、bashMint、assginMint涉及的讀寫(xiě)操作多一些,可能花費(fèi)時(shí)間比其他方法久一點(diǎn).總體來(lái)說(shuō),方法的調(diào)用花費(fèi)時(shí)間較低.
如果有人想要攻擊以太坊區(qū)塊鏈,需要擁有51%的算力才能成功.根據(jù)etherscan的數(shù)據(jù)統(tǒng)計(jì)(2019年5月)顯示,大概不到10s出一個(gè)塊,一個(gè)塊平均2個(gè)以太幣,大約3000元人民幣.如果擁用51%算力,每秒大概獲得人民幣150元(https://etherscan.io/).除非攻擊收益大于150 RMB/s,否則以太坊區(qū)塊鏈就是安全的.但是以太坊上的智能合約出現(xiàn)了多次漏洞.例如,The DAO攻擊者利用合約地址的遞歸調(diào)用竊取了大量的代幣,原因是在代碼中先轉(zhuǎn)賬給地址,后減去合約中地址的代幣.美鏈因?yàn)闆](méi)有使用安全的計(jì)算方法,導(dǎo)致整數(shù)溢出.FOM03D由于沒(méi)有考慮到網(wǎng)絡(luò)堵塞問(wèn)題被竊取了大量代幣.本文針對(duì)這些問(wèn)題做出了針對(duì)性的檢查.
7結(jié)語(yǔ)
本文針對(duì)社區(qū)貢獻(xiàn)貨幣化的中心化問(wèn)題,提出了一個(gè)基于以太坊的社區(qū)貢獻(xiàn)激勵(lì)方法.首先對(duì)該方法的整體架構(gòu)和合約實(shí)現(xiàn)進(jìn)行介紹,之后對(duì)主要的算法和流程進(jìn)行了詳細(xì)說(shuō)明,最后對(duì)運(yùn)行成本進(jìn)行分析并對(duì)安全性進(jìn)行了檢查.在未來(lái)的工作可以分為兩點(diǎn):第一,針對(duì)社區(qū)貢獻(xiàn)貨幣化是否能夠促進(jìn)社區(qū)發(fā)展找到理論基礎(chǔ);第二,在不降低去中心的前提下,找到合適的區(qū)塊鏈平臺(tái)進(jìn)行實(shí)現(xiàn),進(jìn)一步降低費(fèi)用.總之,本文以社區(qū)貢獻(xiàn)貨幣化為基礎(chǔ),主要從3個(gè)方面來(lái)設(shè)計(jì)系統(tǒng):貨幣、群體力量和需求關(guān)系.把區(qū)塊鏈技術(shù)應(yīng)用到社區(qū)中,增強(qiáng)了社區(qū)系統(tǒng)的表達(dá)能力,為現(xiàn)有的社區(qū)發(fā)展提供了一些有益的啟示.