火星链 火星链
Ctrl+D收藏火星链
首页 > Ethereum > 正文

以太坊:一文探讨如何在比特币实现高性能智能合约?

作者:

时间:1900/1/1 0:00:00

提起智能合约,很多人的第一反应就是以太坊,甚至在维基百科中搜索智能合约的时候,都会给出如下的定义:智能合约:是一种特殊协议,在区块链内制定合约时使用,当中内含了代码函数(Function),亦能与其他合约进行交互、做决策、存储资料及发送以太币等功能。显然将智能合约仅仅定义为以太坊功能的一部分有点以偏概全,相比之下,IBM给出的智能合约定义更为准确,更符合现代各类层出不穷的公链和合约:IBM定义的智能合约:只是存储在区块链上的程序,在满足预先确定的条件时会运行这些程序。它们通常用于自动执行协议,以便所有参与者都可以立即确定结果,而无需任何中间人参与,也不会浪费时间。它们还可以自动完成工作流程,在满足条件时触发下一个操作。总结就是:1.存储在区块链上2.在满足特定条件下会运行特定逻辑3.运行逻辑不需要任何第三方参与因此满足这三点的都可以看作是智能合约。其实比特币,莱特币以及Doge这些看起来只能转账代币的区块链系统也是满足智能合约的定义,其实它们的转账功能本身也是智能合约的一种。但是我们通常不认为只能转账的区块链是智能合约平台,主要因为它们在第二条下的场景太少,这个特定逻辑被缩限在几种固定的场景,例如比特币只有P2PKH,P2PK,P2SH等等标准交易逻辑,能够使用的场景无非也就是单签,多签等很有限的场景,无法根据开发者的需要自由定制执行逻辑,比如更丰富的前提条件,更复杂的逻辑控制,更灵活的合约间交互等等。因此更广泛意义上的智能合约还要加上第四点:4.图灵完备,可以执行任意逻辑账户模型、UTXO模型与智能合约

人民日报海外版:区块链正在多领域大展身手:金色财经报道,《人民日报海外版》(2023年07月19日 第08版)刊文,近日,首个区块链技术领域国家标准发布。区块链在防伪溯源、供应链管理、司法存证、政务数据共享、民生服务等场景中正广泛应用。专家认为,相关利好政策落地,给区块链应用带来更多发展机遇。

农产品“全链条追溯”,在山东省潍坊市坊安街道洼里村玉泉洼种植专业合作社的韭菜种植基地里,传感器布满田边地角,摄像头24小时不间断运转,将菜地数据实时传输“上链”。据介绍,“区块链+韭菜”是潍坊市和农业农村部信息中心、中国电信集团有限公司探索的创新应用,由于区块链具有不可篡改、不可伪造等特点,蔬菜生产、采摘、物流、销售的每一步操作数据都留存在区块链平台上,全过程可追溯。[2023/7/31 16:07:43]

账户模型

我们熟知的智能合约公链平台,例如以太坊,EOS,Solana等在执行方式上都可以称作账户模型。账户模型非常容易理解,和我们的支付宝账户,银行账户等等是一种思维方式,每个人有一个或多个「账户」,每个账户有一个「余额」。A->B转账的过程就是从账户A的余额中减去X,然后再从账户B的余额中增加X。如果给这个转账过程增加一些逻辑条件,设定满足特定的条件,这个转账才能发生,那么就形成了智能合约。以太坊内部有一个虚拟机,被称为EVM,这个虚拟机就是用来监听特定的条件,满足条件之后,自动执行转账。因为这个虚拟机可以执行编程代码,因此只需要用计算机高层编程语言编写逻辑,并且部署到链上就可以轻松实现任意的逻辑。这种账户模型因为非常贴近面向对象的编程方式,只需要定义成员变量,以及方法,就可以轻松实现任意逻辑。也正因如此,市面上的绝大多数智能合约平台都是运行在账户模型之上。账户模型也有一个很显著的弊端:就是虚拟机在分布式节点的条件下如何保证一致性。由于以太坊上所有的合约都是由发送以太坊交易来驱动的,因此收到交易的顺序会影响交易的结果,为了保证所有节点都执行相同的逻辑,就必须保证所有节点收到交易的顺序是一致的,如果不一致则会造成混乱。显然,在分布式的环境下,所有节点很难保持接收交易的一致性,尤其是高频交易的场景下,如果A给B连续快速发送10笔金额,必须要等到所有节点按顺序接收到所有交易后,才能结算完成。如果某个节点先收到了第十笔交易,那么就需要等待其他9笔交易都就位之后,才能处理第十笔。另外,每笔以太坊交易只能进行1对1转账,在高频场景,尤其是多对多的复杂情形下,非常吃力。为了突出以下以太坊的性能问题,我们假设以下场景,A账户要给100个人派发红包。如果使用ETH来发红包的话,必须按照顺序发送给1号,2号,3号...需要构造100个交易,一个接着一个进行发送,节点也必须一个接着一个按次序处理。因为每次发送都要等待上一次余额确定,因此1号,2号他们收到红包的顺序是确定的,100号只有等前面的人都收到红包之后,才能收到红包。传统互联网应用使用账户模型的应用,都要配合数据库的强一致锁,或者强事务等来实现账户修改的安全,这个问题放在分布式的区块链上就格外显著。核心原因就是,对账户的修改必须遵照严格的顺序来执行,顺序的先后不同可能会导致执行结果的千差万别。UTXO模型

法国农业信贷银行推出基于区块链技术的数字债券平台“so|bond”:金色财经报道,法国农业信贷银行Crédit Agricole CIB宣布和北欧企业银行SEB合作推出基于区块链技术的可持续开放数字债券平台“so|bond”,让资本市场发行方能够在区块链网络上发行数字债券并通过智能合约筹集资金和管理证券,利用去中心化和高效的基础设施实现银行和金融服务部门的现代化和数字化。据悉,该平台开放、透明和安全的模式也促进了市场参与者之间的信任,并允许进一步创新,例如使用未来的央行数字货币(CBDC)。(Ffnews)[2023/4/3 13:42:33]

UTXO模型是另一种主流区块链采用的模型,比特币,莱特币,DOGE等区块链采用的是这种模型。UTXO的意思是「未花费交易输出」。这种模型非常类似我们日常使用的现金,可以看做一种改良版的现金。区块链并不记载和维护某个地址有多少余额,记载的是一张张钞票是属于哪个地址。比特币的场景下,某个地址A的余额不能直接查询到,需要统计有多少张钞票是属于A的。比方说,我们有一个钱包,里面放了一张10元,一张100元,还放了一个1块的硬币,那么我们可以说,我们的钱包余额是111元,换言之,如果不去计算每一张纸币与面值,仅凭钱包本身是不知道有多少余额的,这与以太坊支付宝之类的账户模型有很大不同。比特币转账的时候怎么转呢,同样很接近我们平时使用现金支付的样子。还是刚才的真钱包,如A要给B付1块钱,那么A有3种方法可以付给B,给他1块,给他10块找回9块,给他100块找回99块。找钱这一点与现金不太一样,或者可以说是改良的地方。A给B10块找回9块,并不是让B找出来9块钱还给A,而是A把10块钱烧掉,然后由系统重新印出一张1块给B,印出一张9块给A。经过交易后,A的钱包有一张面值100的钞票,一张面值9块的钞票,还有一张1块,余额是110块。根据上面的描述,我们可以知道,比特币的转账和收款就是钱包里的纸钞不断消灭和生成的过程。需要知道比特币地址的余额,就需要把这个钱包地址的所有钞票拿出来,计算所有面值并求和。同时,比特币支持多对多交易,比如说可以一笔交易让A同时给DEF转账1块:1.拿出100面值烧掉,印出99块还给A,1块给D。2.拿出10块面值烧掉,印出9块还给A,1块给E。3.拿出1块面值烧掉,不找零给A,1块给F。UTXO模型神奇之处就在于,上面3个步骤可以分三个不相关的交易来发送,也可以直接使用1个交易来进行发送。对比以太坊,比特币要同时发送给100个人,只需要一笔交易就可以让100个人同时收到钱,性能差距可想而知。这样就理解为什么央行数字货币使用的是UTXO模型了,不然深圳怎么给5万个钱包发送1000万数字人民币?UTXO脚本控制,一个UTXO可不可以被销毁,控制的粒度是UTXO的级别,对交易没有顺序要求,因此可以进行多对多交易以及并行交易校验,在现金转账的场景下有极高的性能。UTXO脚本智能化

前新加坡电信体育部主管加入Web3创作者平台Virtualness:金色财经报道,前新加坡电信体育部主管Joyee Biswas以创始团队成员身份加入Web3创作者平台Virtualness,负责领导体育和媒体合作伙伴关系。

此前报道,去年11月Virtualness完成800万美元种子轮融资, Blockchange Ventures领投。[2023/1/12 11:07:51]

刚才提到的UTXO模型在并行化上面有极大的优势,具备突出的拓展性能,但是为什么我们在UTXO的公链上很少能够看到智能合约呢?主要是以下几点原因:1.UTXO脚本编程较为复杂2.BTC等公链限制了脚本类型,脚本体积等3.分布式状态管理较为复杂我们逐个解释一下。首先很多人并不知道,其实比特币是可以自由编程的。我们从Bitcoin的wiki可以看到,Bitcoin有大量操作码,这种操作码看上去及其不友好,长得非常像汇编语言。学习过比特币脚本原理的人应该知道,能不能花费比特币的判断是通过一个栈式结构来存储和校验的。

NFT市场Blur交易额超越Rarible:金色财经报道,据 Dapprader 最新数据显示,NFT 市场 Blur 交易额已达到 3.427 亿美元,超越 Rarible 位列 NFT 市场交易总额排名第 13 位,当前 Rarible 交易额约为 3.0175 亿美元。[2023/1/6 10:58:16]

栈中依次放入解锁脚本和锁定脚本,然后依次执行操作码,如果最终栈的返回值是true,那么此UTXO可花费,反之不可花费。其实我们熟悉的很多编程语言,在计算机底层执行逻辑的时候,也是栈的结构,比如Java,rust,go等等。以Java为例,Java存在栈内存和堆内存的概念,栈内存主要执行函数内部逻辑,堆内存主要存放对象等数据。由此可见,栈实际上是可以执行任意逻辑的,Java编译之后的字节码就是在操作这个栈来实现各种复杂的业务逻辑。比特币脚本使用的栈和虚拟机虽然不如JVM那么多复杂特性,但是通过一定的组合也是可以实现几乎全部的图灵完备逻辑。这里很多人会说比特币脚本没有死循环,因此不是图灵完备。实际上这是故意为之,为了保证计算一定会产生一个结果。其实以太坊等也没有真正的死循环,gas烧尽之后循环就会停止,比特币脚本在做循环的时候,需要预先将循环重复写入到脚本栈中,想做死循环,就要写一个无限长的脚本,这种交易明显是毫无意义的,在实际的脚本编写中,比特币脚本都会指定一个上限循环次数,确保手续费在合理的范围内。说了这么多脚本栈,我们来看看比特币脚本如何实现一些智能合约。一个最典型的合约场景就是ERC721,就是NFT合约。以太坊场景下要创建NFT,首先要部署一个合约账户,然后所有的NFT所有权由这个账户管理,所有此NFT的转账都要和这个NFT合约账户交互。在UTXO模型下,我们设计这样一种UTXO,它内部存在一段数据和代码,标记此UTXO代表什么NFT,谁可以解锁,怎么销毁它,怎么保证上限,那么这个UTXO就可以代表这个NFT。拥有这个UTXO的人就拥有了这个NFT。想要转账这个NFT,你就必须用私钥签名达成解锁条件,然后由比特币矿工来执行你的脚本,判断你是否可以转账这个UTXO。更重要的是,同一个系列的NFT,是分散在不同的UTXO中的,因此只要从分布式全局状态中找出满足特定条件的UTXO,就可以判断出NFT都属于谁。这些NFT的转账可以并行,并且互相之间不会产生影响,这也就提供了最高的性能。因此比特币合约的思想,就是使用单个UTXO脚本栈来存储状态和逻辑,整体状态由一批UTXO的状态共同组成,相对应以太坊的合约状态仅存在于一个账户中,对比之下,比特币的合约就拥有了和UTXO一样级别的并发能力,也就为大规模的高性能使用打下了基础。不考虑脚本体积和实用性以及客户端限制的话,在比特币上实现上上述逻辑从理论上是完全可行的,但是由于UTXO的独立特性,实际工程中会遇到两个难题,一个是UTXO互相感应的问题,另一个是合约溯源防伪的问题,这两个问题都被MVC链给巧妙解决了,因此可以最终实现可实用的高性能UTXO模型智能合约。MVC是一条完美实现比特币+高性能智能合约的Web3公链:1.采用兼容UTXO并行处理能力的一层智能合约技术「MetaTXID方案」;2.结合了UTXO模型优势,是区块链领域上并发性最高,执行成本最低的Layer-1链上智能合约方案;3.首次实现了UTXO模型公链的实用性图灵完备,可满足一切Web3应用和元宇宙应用的使用场景。MVC如何解决这两个问题,可以参阅官网白皮书或者等之后详细解释。注:本文节选部分章节自知乎文章《浅谈比特币UTXO模型和以太坊账户模型的优劣》。原地址

Compound协议升级代码错误导致cETH被锁定7天:金色财经报道,借贷平台 Compound Finance 执行了一项治理提案,更新了包含代码错误的 Chainlink 价格信息。此代码错误导致人们借贷 cETH的交易被恢复。这意味着用户不能借入或提取抵押品。用户仍然可以偿还债务并为借入的其他资产头寸添加抵押品,以避免潜在的清算。代码错误还导致 Compound 的前端暂时停止工作。

Compound 的 CEO Robert Leshner 证实目前没有资金面临风险,用户仍然可以偿还债务并添加抵押品以避免清算。但cETH可能需要 7 天才能正常运行。可能会有更多的治理建议来纠正这种情况。[2022/8/31 12:59:28]

标签:比特币区块链NFT以太坊买比特币违法吗区块链工程专业学什么dogenftVSYS币会成为第二个以太坊吗

Ethereum热门资讯
STA:详解StarkNet性能路线图:如何优化排序器?

Rollups的有效性不受限于L1的吞吐量,使得L2的TPS可以很高。在StarkNet的性能路线图中,解决了系统中的一个关键因素——排序器.

1900/1/1 0:00:00
ETH:盘点2023年值得关注的空投项目

我们梳理了2023年值得关注的空投项目,并且按照不同赛道进行了梳理。此文是Biteye2023空投系列文章的第一篇,后续我们会持续增加和更新项目信息,请大家关注我们推特@biteyecn获取最新.

1900/1/1 0:00:00
比特币:一窥聪明钱的稳定币持仓情况:后市趋势如何?

记住投资最基本的黄金法则之一:"跟着钱走"。稳定币是加密货币的命脉,让我们来看看,这些命脉都流向了哪里?TL;DR:最近,11月出现了有史以来最高的链上交易量,稳定币从交易所.

1900/1/1 0:00:00
TOKE:多案例分析代币经济设计思路

视频链接:https://www.bilibili.com/video/BV1P14y1T74R/?spm_id_from=333.999.0.0摘要Token是用于管理和激励加密资产的措施.

1900/1/1 0:00:00
AVAL:回顾Avalanche生态系统在2022年的兴与败

Avalanche是加密行业中最有前途的L1公链之一。它是由AvaLabs于2020年创建,此后基于其高交易吞吐量和低交易费用得特点,成为了DeFi开发人员的热门选择.

1900/1/1 0:00:00
COS:Cosmos:天才在左、疯子在右

以太坊在巴黎大会后,Vitalik为开发者指明了Rollsup+扩容的发展道路。我不禁感叹以太坊对于去中心技术认知的超前,从早前的状态通道、Plasma,到如今的Danksharding、Rol.

1900/1/1 0:00:00