当前位置:首页 > 物联网 > 区块链
[导读] 君士坦丁堡硬升级中引入了一个新操作码 CREATE2[1] ,它使用新的方式来计算常见的合约地址,让生成的合约地址更具有可控性,通过CREATE2可以延伸出很多新的玩法,这篇文章来探讨下,在广义

君士坦丁堡硬升级中引入了一个新操作码 CREATE2[1] ,它使用新的方式来计算常见的合约地址,让生成的合约地址更具有可控性,通过CREATE2可以延伸出很多新的玩法,这篇文章来探讨下,在广义状态通道中的妙用。

关于合约地址与状态通道,先科普一下相关知识点。

合约地址如何计算出来的?

在 CREATE2 以前,CREATE指令创建的合约地址是通通过交易发起者(sender)的地址以及交易序号(nonce)来计算确定的。sender 和 nonce 进行 RLP 编码,然后用 Keccak-256 进行 hash 计算(伪码):

keccak256(rlp([sender, nonce]))

而 CREATE2 指令则主要是根据创建合约的初始化代码(init_code)及盐(slat) 生成(伪码):

init_code 代码是用来创建合约的,合约创建完成后将返回运行时字节码(runtime bytecode)。通常init_code代码包括合约的构造函数及其参数,以及合约代码本身。

keccak256(0xff + sender + salt + keccak256(init_code))

CREATE创建的合约地址依赖于一个跟随交易者发起的交易数量不断的增长的nonce变量,这种方式很难确定一个未来要部署的合约地址(比如提前使用一个还未部署的合约地址),而使用 CREATE2 只需要确定了创建合约的代码(init_code)及盐(slat),则合约地址就是确定的(实际上让地址变成了对合约代码的验证)。

状态通道

状态通道由支付通道演进而来,我们先通过一个简单的例子介绍下支付通道,假设晓娜经常要去楼下的咖啡店喝咖啡,晓娜每次除了支付0.1 eth 咖啡费用之外,还需要支付一笔小费给矿工。为了节约小费,晓娜可以在她与咖啡店之间创建一个支付通道,通过加密签名可以重复安全的转移以太币,而不用支付手续费。晓娜可以这样做:

1.创建一个支付通道智能合约,并存入20个以太币(链上)。

2.每次买咖啡时签名一条交易信息给老板,交易信息包含内容有:第几次购买咖啡、总共要支付多少钱给老板及签名数据本身。(链下)

3.晓娜重复步骤2,而老板任何时候都可以把晓娜的签名信息发送给链上支付通道智能合约,取回资金。

4.晓娜不想喝咖啡了,取回支付通道的余额。

通过这样的方式,晓娜可以节约大量的手续费。这里例子的代码可以参考编写一个简单的支付通道[2]及simple-payment-channel[3]。本例没有考虑一些极端条件,在比特币闪电网络白皮书[4] 有关于支付通道详细的阐述。

状态通道则可以基于特定应用程序的状态进行链下交互(而不仅仅是支付信息), 如果可以部署一个游戏合约定义游戏规则并抵押资金,玩家可以在链下玩游戏(每进行一步游戏签名发给对方), 游戏结束时,只需要把最后的状态提交给合约,合约进行输赢判断,并奖励。

Force-Move 游戏框架[5] 就是让开发者可以模块化的、可扩展的方式,开发基于状态通道的的回合制游戏。

广义状态通道

感觉才进入主题,广义状态通道的意思是,用户可以用同一个通道做多种不同的事情。刚刚上面介绍的状态通道,都是基于特定目的的通道,抵押的资金只能根据实现定义好的合约逻辑进行分配,而广义状态通道则是使用一个强大的多签钱包,可以根据其他合约定义的规则来进行资金的分配,从而实现更加通用的目的。

举个例子:TIny熊和晓娜拥有一个抵押的资金的多签钱包,然后定义一个剪刀石头布的游戏合约,每次输方向赢方支付1个以太币,玩游戏可以在链下进行,结束后,最终的状态提交给游戏合约,并触发多签钱包根据状态分配资金。

通过使用 CREATE2,可以在游戏合约不上链的情况下进行游戏,因为只要游戏的规则代码确定了,就可以确定游戏合约的地址,在链下就可以基于这个确定的合约地址进行签名玩游戏,甚至我们根本不需要部署游戏合约,仅仅在有游戏玩家作弊的时候,部署游戏合约进行链上仲裁。

如果不能理解上面这一点,就当作剪刀石头布游戏,TIny熊和晓娜赢的次数一样多,这样谁也不用给对方支付费用,对于链上的多签钱包,相当于什么也没有发生,这样也同样不需要部署游戏合约。

Counterfactual 技术

有一个专门的项目 Counterfactual[6] 研究广义状态通道想想扩容技术,现在中文资料里把 Counterfactual 直译为“反事实”,非常的晦涩,我认为应该翻译成“拟上链”。为了方便大家阅读 Counterfactual 相关文档,对 Counterfactual 相关的术语进行下解释,这个概念本身有一点“哲学”。

Counterfactual 官方的一个介绍是,在状态通道中,一个“Counterfactual X” 代表:

•X 可以在链上发生,但它并没有。

•任何参与者都可以单方面使得 X 在链上发生。

•参与者们能够假设“ X 已经在链上发生”,并基于此进行其他行动。

Counterfactual 表达为拟上链还是比较准确,充分表达了可以上链,却没有上链。

Counterfactual instanTIaTIon 是另一个常用术语,通过 Counterfactual instantiation 可以扩展状态通道的功能, 我把翻译为拟上链实例化,它表示实例化一个并没有实际上链的合约,尽管它没有上链,各方却都会在假设合约已经被部署上链进而进行交互。
来源: 深入浅出区块链技术 

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭