元宇宙非小号金色财经交流群社区官网

以太坊中的交易执行起来具有原子性

时间:2022-03-03 16:16:40

我们经常听说”发币“就是基于区块链发代币,这种发代币和区块链本身挖矿产生的原生币是有本质区别的。代币就是通过智能合约的方式生成一组数字资产。通过智能合约编写代码,可以规定某个代币的总量及转账、收取甚至销毁等操作。

调用智能合约和转账类似,A->B转账,如果B是个普通账户,那么这只是一个普通的转账交易,和BTC的转账交易是一样的,如果B是合约账户的话,那么这个转账其实是发起一次对B的合约的调用,具体调用的是合约中的哪个函数是在数据域(data域)中另外说明的。

但是“账户模型”的区块链系统中,一般会包含转账交易和智能合约调用交易。交易的执行结果一般要经过虚拟机执行得到,考虑合约调用的场景,交易的执行结果很可能并不体现在交易内容和账户空间变更结果中;因此,交易的回执数据需要独立存储,为了统一账户创建、账户间转账、智能合约调用等多种交易的执行结果,系统一般会设计统一的回执数据组织格式。

第一,尽可能多地与未发币项目的智能合约进行交互,许多项目方在发币时会对与其智能合约交互过的地址空投代币,部分项目甚至也会发币后继续对交互地址进行空投,例如1inch。当然,其中也要考虑到每次交互数十美元的gas费成本,因此尽量要筛选优质项目(意味着价值高)、具有一定确定性空投机会的项目参与。

在函数的执行中如果未验证传入参数的合理性,就可能导致函数不按照预想的结果执行,比如permit函数如果未做零地址校验,且对应的代币的销毁代币方式是将代币发送至零地址,那么攻击者可以转移零地址中被销毁的代币。还例如在一些智能合约中会存在freeze函数,用于冻结账户,但是在进行代币转账时,只验证了来源账户,未对转入地址进行验证导致转入的代币无法提出,还需注意的有transferFrom要额外验证from地址。黑名单验证也有类似问题。

以太坊中的交易执行起来具有原子性,一个交易要么全部执行要么完全不执行,不会只执行一部分。这个交易既包含普通的转账交易也包含对智能合约的调用,所以如果在执行智能合约过程中出现任何错误,会导致整个交易的执行回滚,退回到开始执行之前的状态,就好像这个交易完全没有执行过。

标签:交易 以太坊

本站分享的区块链、Web3.0元宇宙、NFT、数字藏品最新消息等相关数藏知识快讯NFR资讯新闻,与金色财经非小号巴比特星球前线Btc中国官网无关,本站资讯观点不作为投资依据,市场有风险,投资需谨慎!不提供社区论坛BBS微博微信交流群等相关币圈信息发布!
本站内容来源于互联网,如存在侵权及违规内容投诉邮箱( zztaobao@vip.qq.com )