据链门户了解,智能合约的数据设计、存储、生命周期、交易整个流程(chéng)。智(zhì)能合(hé)约总体(tǐ)设(shè)计(jì)原(yuán)则最重要的四点是:
设计一个智能(néng)合约是典(diǎn)型(xíng)的虚拟机的(de)应(yīng)用,这(zhè)里面要(yào)考(kǎo)虑的因素特别多(duō),我在这(zhè)里摘取最重(chóng)要的四点,数据(jù)设计、处理时(shí)间、区块大小(xiǎo),以及(jí)产块时(shí)间。
首先,看第一点数(shù)据(jù)设计(jì),Achain能够提供一整(zhěng)套完(wán)整数据的存储(chǔ)和存取。
Achain能(néng)够很方便的把数据从(cóng)底层(céng)的数据库中取出来,组(zǔ)成虚(xū)拟机(jī)需要的数据,然(rán)后传给虚拟机,等到数据再传回来的时候进行存储。
第二点,需要考(kǎo)虑(lǜ)区块的大小。
我(wǒ)们(men)都知(zhī)道(dào)区块链是以区块为存储(chǔ)的,而区块大小(xiǎo)是有一定上限的,这个大小(xiǎo)是10兆(zhào)。我们的数(shù)据不能过(guò)大,如果过大,所承担的合约调用数据会非(fēi)常(cháng)少,这样会直接影(yǐng)响到合(hé)约调用的(de)性能。
第三点,产(chǎn)块时间是指,区块产生的时间。
对于(yú)我们来(lái)说,Achain产(chǎn)生一个区块大约是(shì)十(shí)秒(miǎo)钟。包(bāo)含两部(bù)分内(nèi)容,第一部分(fèn)是(shì)三秒(miǎo),用于全网同步;最(zuì)后七(qī)秒,是留给合约调用。
第(dì)四点(diǎn),处理时间是指,Glua虚拟机执行合约的一个(gè)时间。
留给合约调(diào)用的时间只有(yǒu)7秒,这个时间并不多,所以(yǐ)我(wǒ)们的处理时间(jiān)就必须得尽(jìn)可能的少,因(yīn)此只能(néng)在七秒中做尽可能多的事情(qíng)。
这四个约束(shù)条件特(tè)别(bié)有意思(sī),区(qū)块大小和数(shù)据设计,讲(jiǎng)的(de)是空间的问题(tí);处理(lǐ)时间和产(chǎn)块时间,讲的(de)是时间的(de)问题。这(zhè)两个(gè)问题是鱼和(hé)熊掌不能兼(jiān)得,让处理(lǐ)时间和数据设计(jì)尽可能(néng)达到(dào)一定平衡。数据设计其实(shí)是跟这四个里(lǐ)面最重要的一点,因为数据设计不合理,会直接影响你的储(chǔ)备时间,影(yǐng)响合约(yuē)调度的效(xiào)率。