以太坊智能合约的生命周期

欧易(OKX)交易所

新用户永久最高20%手续费减免!

官网注册   APP下载

最近在写一个募资合约时,发现自己对合约的生命周期还不是很了解,该用一个合约管理所有发起的募资,还是一个募资发起一个合约呢?因此查询了官网跟几文章,然后在testnet上测试了一下。

以物件导向来比喻

以物件导向来比喻的话,可以把一个contract 想像成一个class,contract 可以被多次部署在网路上,每个实体都会有不同的地址,这个地址以后可以用来和这个地址指定的合约实体交互。因此每个部署的合约可以想成是物件导向的物件实体,每个合约实体都有自己的状态(内部永久性的资料)。

合约的建构函数在合约部署到网路上时被呼叫,这也是唯一次被呼叫。所以,所有的初始化都应该在建构函数里,在部署时只被执行一次。
在建立完合约之后,会有一个合约地址可以使用,在合约的有效期限之内可以用来和这个合约实体交互。

可以在合约内透过调用一个包括selfdestruct 的函数来销毁合约,这个函数就类似于物件导向里面解构函数destructor 的概念。

BitMEX遭到调查对加密币市场有何冲击

BitMEX 目前已经遭到美国商品期货交易局查封,除了数位创办人与高阶主管遭到通缉,平台也停止交易,但有开放用户提领帐户余额,截止目前为止,高达4.6 万BTC 流出BitMEX 辗转到了各大

多合约

如果你的方案需要一个以上的合约来执行任务,就必需独立地部署每个合约。A合约跟B合约沟通的唯一方法就是知道B合约的地址。

如果A合约需要跟不同的B合约实体进行交互,在调用相关函数时必须传入B合约实体的地址。如果A合约只跟一个B合约实体通讯,直接在A合约建构函数里传入B合约的实体地址,让A合约存为变数即可。

讯息传送者的地址

如果A合约里的A函数, 调用B合约里的B函数,在B函数的环境里msg.sender 就是A合约的地址,如果你想在B函数里面确定交易的发起者,应该使用tx.origin。如果你从A函数里调用同样是A合约的A1函数, msg.sender 就是发起交易的地址跟tx.origin 一样。

结论

对于我现在这个募资项目来说,一个合约实体等同于一个独立的募资,显然比较合理。然后再用其他方式来管理这些合约实体,比如说一个管理类别的合约。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。

日本SBI e-Sports正式宣布为电竞选手发瑞波币当薪水

日本SBI金融集团召开财报会议披露,尽管疫情当前,但SBI本季度营业额高达1,111亿日圆,同比增长20.6%,创下公司成立以来最高记录。当时,总裁北尾吉孝已表示,看好电竞业务必将会增

原创文章,作者:掘金K,如若转载,请注明出处:https://www.20on.com/120115.html

(0)
掘金K掘金K
上一篇 6 6 月, 2022 7:05 下午
下一篇 6 6 月, 2022 7:17 下午

欧易(OKX)交易所

新用户永久最高20%手续费减免!

官网注册   APP下载

相关推荐