🌞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. 转账