第一笔链上交易
第一笔链上交易

这篇文章指导你如何在 starcoin 区块链上执行自己的第一笔交易。 在这之前,建议你先阅读 tech 相关的文章,对 starcoin 的基本概念有一定了解。

前提

假设你已经在本地跑起来一个 starcoin dev 节点。

提交交易的几个步骤

  • 启动 starcoin 控制台,并连接到 starcoin 节点,详细步骤请查阅使用 strcoin 控制台
  • 创建两个账户,Alice,Bob, 详细步骤请查阅账号管理
  • 给 Alice 账户挖钱。
  • 提交转账交易:Alice 给 Bob 打钱。

创建账户

连接到节点后,我们先来创建两个账户。这里我们假设两个账号已经创建成功,Alice 是默认账号,的地址是 0xfa635e304e0c1accf59e6ed211998158 , Bob 的地址是 0x76a12ea4a733de0fae0cf329083d1952 。

使用 Faucet 给账户充钱

Dev 环境下,可以利用 faucet 给账户充钱。faucet 只在 dev 和 test net 中存在,以便于开发者做开发和测试。 下面我们就通过 console 给 Alice 充钱。

starcoin% dev get-coin -v 100STC

dev get-coin 会往默认账户中充钱,如果链上不存在这个账户,它会先创建这个账户,然后再往该账户转入 -v 指定数量的 coin。 命令输出的是以 faucet 账户(地址是 0000000000000000000000000a550c18 )发出的交易信息。

等待几秒钟,然后再查看账户信息。

starcoin% account show 0xfa635e304e0c1accf59e6ed211998158
{
  "ok": {
    "account": {
      "address": "0xfa635e304e0c1accf59e6ed211998158",
      "is_default": true,
      "is_readonly": false,
      "public_key": "0xcf6af68573e8cc232e99aeb11ba2786c8e3f94d90108b1239c36154cd1a75788",
      "receipt_identifier": "stc1plf34uvzwpsdveav7dmfprxvptqrzyhqp"
    },
    "auth_key": "0x5007518ade0231dd0ebb785ba3cc3ecffa635e304e0c1accf59e6ed211998158",
    "balances": {
      "0x00000000000000000000000000000001::STC::STC": 100000000000
    },
    "sequence_number": 0
  }
}

可以看到 balances 有数据了。

提交交易 - 转账

首先需要解锁 Alice 的账户,授权 node 使用 alice 的私钥对交易签名。

account unlock -p my-pass 0xfa635e304e0c1accf59e6ed211998158

其中 -p my-pass 是创建账户时传入的密码,初始的默认账号密码为空,可以不传递这个参数。

账户解锁后,执行以下命令:

starcoin% account execute-function --function 0x1::TransferScripts::peer_to_peer_v2 -t 0x1::STC::STC --arg 0x76a12ea4a733de0fae0cf329083d1952 --arg 10000u128 -s 0xfa635e304e0c1accf59e6ed211998158

其中:

  • -s 0xfa635e304e0c1accf59e6ed211998158: 是 Alice 的账户地址。
  • -r 0x76a12ea4a733de0fae0cf329083d1952:是 Bob 的账户地址。

如果,Bob 的账户在链上还不存在,转账交易会自动在链上创建 Bob 的账户。

此时,交易已经被提交到链上。还需要等待几秒(dev 环境出块时间比较短),让交易上链。然后再查看 Bob 的账户信息:

starcoin% account show 0x76a12ea4a733de0fae0cf329083d1952
{
  "ok": {
    "account": {
      "address": "0x76a12ea4a733de0fae0cf329083d1952",
      "is_default": false,
      "is_readonly": false,
      "public_key": "0xabd226b1b90b0e969d1db3f937d600006f4c5db342ef3f8bc49a555e9c2fea2b",
      "receipt_identifier": "stc1pw6sjaf98x00qltsv7v5ss0ge2gnl9jpv"
    },
    "auth_key": "0x891410477b6abc7c95bb8eff9cdcf9af76a12ea4a733de0fae0cf329083d1952",
    "balances": {
      "0x00000000000000000000000000000001::STC::STC": 10000
    },
    "sequence_number": 0
  }
}

可以发现:Bob 账户已经有钱了。

至此,你已经成功完成了一笔链上转账!