Skip to content
Aki edited this page Aug 3, 2020 · 12 revisions

为了方便交流:

原生资产:指substrate中的balances模块资产;
令牌:合约定义的资产;

template docker运行

暴露9933端口供rpc调用

docker run -p 9933:9933 -t frontier-node-dev cargo run --bin frontier-template-node --release -- --dev --rpc-methods=unsafe --rpc-external=true --ws-external=true --rpc-cors=all

问题

调用不存在的rpc,节点会挂掉

调用未实现的web3 rpc接口时,现在的逻辑是直接panick,节点会挂掉。

在metamask中执行交易

如果地址上没有以太坊余额的话,gasPrice必须为0,要到详细页面手工设置,因为默认的0是个很小的数字,并不是0。

创建账户,并获得资产

  1. 使用subkey 生成一个sr25519的account1,记录助记词(或者secret seed)和Public Key
  2. https://polkadot.js.org/中使用助记词(或者secret seed)导入账号account1,并给account1转一些作为手续费
  3. 根据Public key得到对应的evm地址
  4. 根据evm地址计算得到account2
  5. 给account2转账
  6. 使用account1执行evm.withdraw一定数量的资产
  7. 检查account1是否有资产了

使用以太坊钱包

设置节点rpc地址,生成(或者试用已有)地址,然后通过balances模块给这个地址对应的address_account_id转账,转账成功后通过web3 rpc可以验证有没有到账,此时就能用这个钱包操作

给合约转账,并转出

得到合约地址,然后计算出合约地址的address_account_id,然后给这个账号转账; 调用合约的claim等方法,从合约转到调用地址,验证合约地址和调用地址对应的address_account_id有没有变化

获得substrate账户的以太坊地址

cd frontier/template/utils

npm install

node . --evm-address 5FHneW46xGXgs5mUiveU4sbTyGBzmstUspZC92UhjJM694ty