以太坊交易

交易这个词大家肯定不陌生,现实生活中,有钱和钱的交易,有钱和物的交易,也有物和物的交易等多种多样的方式,那以太坊中的交易,我们会看到,也分很多种,比如根据我们上节课中说的以太坊中的两种账户,普通账户和普通账户之间的交易是转账的交易,普通账户和智能合约账户之间的交易,可能就不一定是转账交易,也有可能是普通账户去调用合约账户中的合约,但这个调用合约这个过程,我们也称为交易。

我们看看关于以太坊的交易,比较官方的定义:

交易是一个签名数据包,用于从一个普通账户向另一个普通账户或者向一个合约转以太币、调用合约的方法或者部署一个新的合约。

接下来我们好好研究一下上面这句话。

首先,前半句说交易是一个签名的数据包。那么涉及两个问题,这个数据包长什么样包括哪些数据,以及如何签名。

我们先讲讲这个数据包如何签名。我们签名的时候,是用我们的秘钥,使用一种特殊算法,叫做椭圆曲线数字签名算法(ECDSA)这样一种算法,去证明发起交易的这个人的合法性。也就是说,只有证明我是这个账户的主人,我才能用这个账户发起一笔交易,不然的话,这笔交易就是无效的。签名的目的就是确保交易的有效性。

 

第二个问题是,交易这种数据包,它长什么样呢,我们根据上面我们提到的交易的定义,罗列出各种情况,各种情况下,该数据包包含的数据是不太一样的:

1第一种情况,普通账户向另一个普通账户转以太币(也就是单纯的转账),这个时候包含的数据有:发起人的账户地址和签名数据、收款的账户地址、转账金额、愿意支付的手续费等数据。

2普通账户向合约账户转以太币(转账),这种情况下,合约账户的功能只是接受以太币,此时合约账户的作用和普通账户是一样的,所以数据包包含的数据也和第一种情况是一样的

3普通账户向合约账户调用合约的方法,这个时候,数据包包含了发起人的账户地址和签名数据、合约账户的地址、愿意支付的手续费,以及需要输入的数据。因为我们签名讲过,智能合约相当于一个类,它会有各种方法和属性,当我们需要调用时,很多时候需要我们提供输入参数。

4普通账户去部署一个新合约。在这种情况下,新合约在部署之前,是没有地址的,我们也称这种账户为0账户。记住,0账户不是说余额是0 的账户,而是说他还没有诞生,这个账户还没有地址。这种情况下,交易数据包,包含的内容就跟之前一样还是有发起人的账户地址和签名数据、愿意支付的手续费这两项,另外还独有的是编译后的合约的代码。

 

讲到这大家可能发现了,以太坊交易跟我们日常理解的交易还是有些区别的,所以希望大家都可以很快转变观念,特别是对合约的调用也属于交易,这个观念要深深留在记忆中,这样对后续的学习会有很大的帮助。

 

想了解更多?关注我们就够了。

公众号:ipfscom
微信(Q):18191727
Q群:71789361
微信扫一扫,加入知识星球

猜你喜欢

转载自blog.csdn.net/angciyu/article/details/81480009