公鏈設(shè)計中還有哪些改進點需要考慮
考慮到比特幣和以太坊等公鏈不具備的一些轉(zhuǎn)賬交易(Transaction)人性化選項,在新的公鏈設(shè)計中,可以考慮考慮下面的幾個改進點:
1. 賬戶注冊、實名制、匿名交易
在以太坊和比特幣系統(tǒng)中,Alice轉(zhuǎn)賬給Bob時,區(qū)塊鏈上不一定要有Bob的地址信息。直到收到第一筆轉(zhuǎn)賬金額后,區(qū)塊鏈上才能查閱到該地址信息。這就可能導(dǎo)致一些錯誤轉(zhuǎn)賬、黑洞地址等問題。比特幣和以太坊之所以這樣設(shè)計,可能是因為他們是開創(chuàng)性的項目,需要考慮到匿名性以支持灰色金融場景。不過隨著區(qū)塊鏈數(shù)字貨幣的普及,在新的公鏈設(shè)計中,最終需要考慮正常的使用場景。
引入賬戶注冊的好處就是,在注冊賬戶的時候,可以設(shè)定很多其他功能選項,比如:用戶在進行轉(zhuǎn)賬的時候,可以指定【地址注冊選項】,若目標地址未經(jīng)過注冊過,是不允許接收轉(zhuǎn)賬額度的,這樣就避免了錯誤轉(zhuǎn)賬、黑洞地址。
賬戶注冊功能還有可能進一步發(fā)展,而支持實名制賬戶,支持實名制交易。在現(xiàn)實應(yīng)用場景中,實名與匿名都有必要性,所以公鏈設(shè)計中需考慮提供這些選項。讓用戶自己選擇實名制還是匿名交易。賬戶注冊未必損失去中心化特性,這要看賬戶注冊時需要綁定什么信息。若用戶選擇實名制,區(qū)塊鏈可以提供支持,但是用戶也有選擇匿名的自由。
2. 收款方支付礦工費用
注冊賬戶都可開啟【接受做為收款方支付手續(xù)費】的功能,默認情況下,此項功能是關(guān)閉的。即:Alice給Bob轉(zhuǎn)賬,若Bob開啟了該項功能,則可以由Bob支付手續(xù)費。
為了避免付款方可能發(fā)起的惡意攻擊,該項功能會帶有一個參數(shù),指定轉(zhuǎn)賬總額度與手續(xù)費之間的比率范圍,這樣就避免了Alice給Bob轉(zhuǎn)很少的錢,卻消耗了Bob很多手續(xù)費的問題。礦工打包交易入塊之前,就可以根據(jù)實際情況決定是否接受此交易。
這項功能是非常實用的,用戶在進行以太坊ERC-20Token轉(zhuǎn)賬時通常會遇見沒有以太幣就不能進行XX-Token的轉(zhuǎn)賬。有了收款方支付手續(xù)費的功能后,就方便許多了。
3.交易生效的時間范圍
比特幣系統(tǒng)提供了NLockTIme和Sequence功能,可以指定某一筆交易在什么時間之后或者經(jīng)過多少區(qū)塊之后可進入?yún)^(qū)塊,這個功能為跨鏈原子交易和閃電網(wǎng)絡(luò)都提供了很好的基礎(chǔ)磚塊。以太坊也可以通過智能合約模擬出這一功能。這是為了“未來的行為”做支持。區(qū)塊鏈系統(tǒng)還有必要為“當下的行為”提供良好的支持。
因為用戶在發(fā)送一筆交易后,并不能確定這邊交易要等到什么時候才能被打包入塊,用戶需等待一段未知時間,遇到網(wǎng)絡(luò)擁堵的時候,就更麻煩了。用戶為了取消已經(jīng)發(fā)送出去的交易,甚至不得不重新發(fā)送一筆支付了高額手續(xù)費的雙花交易,試圖搶先一步入塊,進而達到取消前一筆交易的目的。這對用戶非常不友好,所以對NLockTIme這個功能做一次推廣就很有必要。用戶可以指定已發(fā)送交易的失效時間或者區(qū)塊數(shù)量參數(shù),在這個時間段之后,用戶可以確切地知道自己發(fā)送的交易是否已經(jīng)生效。若交易沒有生效,則可以重新簽署并再次發(fā)送,而不是茫然地等待著不確定的隨機時間。將失效時間和上塊時間統(tǒng)一為一個參數(shù),用戶可以更方便、更確切地控制交易的生效時間點。
4. 排他交易入塊選項
在編寫以太坊智能合約時,發(fā)現(xiàn)有時候需要一種特殊的排他交易選項:一個區(qū)塊內(nèi),最多只允許一筆交易的目的地址為該合約地址。之所以這么做,是為了防止礦工作惡,因為礦工負責(zé)打包交易,礦工可以針對某些合約做特殊監(jiān)控,而且礦工可以分析出交易里的任何參數(shù),很容易通過操縱交易的入塊順序和一個區(qū)塊里的同類交易的數(shù)量而獲得預(yù)期之外的收益。若用戶在發(fā)交易的時候,可以指定交易入塊的排他性,指定交易只能以順序化的方式依次觸發(fā)合約執(zhí)行便利,就能為部分合約設(shè)計提供便利。
這一功能選項對于普通轉(zhuǎn)賬也是有用的,讓目標地址的轉(zhuǎn)賬記錄更加容易被區(qū)分出來,方便用戶核查賬目。該參數(shù)選項可以由目標賬戶設(shè)定,也可由發(fā)起方設(shè)定,或者互相配合設(shè)定。