Eth Transfer

ETH交易一般理解都是转账交易,但是这个理解是比较狭隘的。这里谈到的交易是一种广义的交易。

交易的发起者:主要是两类
  1. 节点服务,geth控制太。
  2. 调用节点服务,主要是指geth提供RPC接口的客户端,如wallet等。
交易分类:主要是两类
  1. ETH转账交易
  2. 其他交易,包含不限于ERC20 Token的转账交易。
交易相关的RPC接口:eth_sendTransaction And eth_sendRawTransaction

这两个函数以需不需调用者手动进行对最终的参数签名作为区分

  1. eth_sendTransaction:该函数仅用于ETH转账,参数最终的签名不需要调用者手动进行,它会在当前节点中使用已解锁的发起者from的ETH的地址私钥进行签名,因此需要在每次调用该函数进行ETH转账时,需要先解锁from地址。
  2. eth_sendRawTransaction:需要调用者使用from的私钥进行签名参数数据的交易函数,目前的 ERC20 Token转账交易都使用这个函数。ETH转账一样可以使用该函数进行转账,但转账ETH主要由参数来控制。
交易和智能合约的关系

一开始就说到交易有一种狭隘的理解,就是指智能合约的交易(transfer).
那么,广义的交易和狭隘的交易的关系是怎样的?
首先,转账交易首先是调用eth_sendRawTransaction这个RPC接口,把转账交易需要的参数传给节点,节点拿到数据后,提取每个数据字段,其中就包含eth_sendRawTransaction的data参数,data是一个十六进制字符串,它所组成的内容中,就包含methodId,该Id对应的就是transfer函数的名称化后的值。
接着,再根据to参数找到该智能合约,然后基于data的methodId来找到所指是的函数,最后根据data的参数如转给谁,转多少,执行该函数。
执行函数后,无论执行成功失败,都会返回一个交易哈希值(全称是"Transaction Hash", 简称txHash)
在这里插入图片描述

交易参数的说明

1.from
代表的是从哪个地址发起交易,如果交易的to是只能合约地址,那么合约代码中的msg.sender变量代表的就是这个地址from地址。
2.to
代表当前交易的接收地址。注意的是,接收地址不能理解为收款地址,以为to的取值有3种情况:

  1. 智能合约的地址
    当前所发送的交易将会交给对应的智能合约处理,原理和ERC20转账相同。所以在进行ERC20代币转账时,to应该是智能合约的地址。
  2. 普通ETH用户的钱包地址
    就是普通的ETH转账,to
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值