🌞Moon Will Know
🦊

Web3相关概念以及钱包交易流程

NetWork 网络

包含以下信息的一个JSON

Provider 提供者

提供者是一个连接以太坊网络的抽象,用与查询以太坊网络状态或者发送更改状态的交易。
连接BSC:

Singer 签名器

Wallet 钱包

继承Singer的一个类,主要api:
钱包实例主要api:

Contarct 智能合约

合约是在以太坊区块链上的可执行程序的抽象。合约具有代码 (称为字节代码) 以及分配的长期存储 (storage)。每个已部署的合约都有一个地址, 用它连接到合约, 可以向其发送消息来调用合约方法。
合约可以发出 事件, 它可以被应用程序监听(订阅), 当合约执行了特定操作时, 应用程序将收到通知。事件是无法在合约内读取的。
在合约上可以调用两种类型的方法:
视图方法 : 不能添加、移除或更改存储中的任何数据,也不能记录任何事件,并且只能调用其他合约上**视图方法**。 这些方法是免费的(不需要以太)调用。 结果也可以返回给调用者。
非视图方法: 需要支付费用(用Ether),但可以执行任何所需的状态更改操作,记录事件,发送ether并在其他合约上调用非视图方法。 这些方法**不能**将其结果返回给调用者。 这些方法必须由交易触发,由外部拥有的账户(EOA)直接或间接发送(如从另一个合约调用),并且只有在交易被打包(挖矿)后才会产生效果。 因此,这些操作所需的持续时间可能变化很大,并且取决于交易Gas价格、网络拥塞和矿工优先选择方法。
合约 API 提供了简单的方法来连接到一个合约并调用它的方法,它作为 JavaScript 对象上的函数,处理所有的二进制协议转换,内部名称修改和主题构造。 这使得合约对象可以像任何标准的JavaScript对象一样使用,而不必担心以太坊虚拟机或区块链的低级细节。
合约Contract对象是一个元类,它是一个在运行时定义类的类。 可以提供合约定义(称为应用程序二进制接口或ABI)以及可用的方法和事件可以动态添加到对象中。

ABI 应用二进制接口 application binary interface

对合约中的功能和事件的接口进行描述

连接合约

Event Emitter 事件触发器

查询对应token信息 余额

GAS 手续费

gasLimit * gasPrice ,gasLimit 的最小值为 21000,但用户可以设置,gasPrice 和当前区块相关,如果 gas 费设置过低,交易有可能失败,手续费不会被退还。如果 gas 费设置过高,没有使用的 gas 会被返还。

Transaction 交易

通过wallet.sendTransaction() 发起交易。
交易请求
交易回复
交易收据

通过钱包进行转帐

  1. 连接 network
  1. 创建 wallet
  1. wallet 连接到 network ,获得 signer
  1. 查询 gasPrice
  1. 构造交易参数
  1. 使用 signer 进行转账

使用合约进行转账

  1. 连接 network
  1. 创建 wallet
  1. wallet 连接到 network ,获得 signer
  1. 连接 contact
  1. 转账