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

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

前提

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

提交交易的几个步骤

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

创建账户

连接到节点后,我们先来创建两个账户。这里我们假设两个账号已经创建成功,Alice 是默认账号,的地址是 0x988acf6d210701242af03cbb13780745, Bob 的地址是 0x1179ec968815ded9c59775274446ad4c, 收款识别码(receipt_identifier)是 stc1pz9u7e95gzh0dn3vhw5n5g34dfsxum2pt。

使用 Faucet 给账户充钱

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

starcoin% dev get_coin -v 100000000000

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

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

starcoin% account show 0x988acf6d210701242af03cbb13780745
+--------------------+------------------------------------------------------------------------------------------+
| account.address    | 0x988acf6d210701242af03cbb13780745                                                       |
+--------------------+------------------------------------------------------------------------------------------+
| account.is_default | true                                                                                     |
+--------------------+------------------------------------------------------------------------------------------+
| account.public_key | 0xd574c33580942a124b377c0fa64c0d1c021c405893ac99b1cf77a44dc530e4b2                       |
+--------------------+------------------------------------------------------------------------------------------+
| auth_key           | 0x6d9ca71670371e406e6e7821c4560f31988acf6d210701242af03cbb13780745                       |
+--------------------+------------------------------------------------------------------------------------------+
| receipt_identifier | stc1pnz9v7mfpquqjg2hs8ja3x7q8g5fsudrg |
+--------------------+------------------------------------------------------------------------------------------+
| sequence_number    | 0                                                                                        |
+--------------------+------------------------------------------------------------------------------------------+
| balances.STC       | 100000000000                                                                             |
+--------------------+------------------------------------------------------------------------------------------+

可以看到 balancessequence_number 有数据了。

提交交易 - 转账

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

account unlock -p my-pass 0x988acf6d210701242af03cbb13780745

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

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

starcoin% account transfer -s 0x988acf6d210701242af03cbb13780745 -r stc1pz9u7e95gzh0dn3vhw5n5g34dfsxum2pt -v 10000 -b

其中:

  • -s 0x988acf6d210701242af03cbb13780745: 是 Alice 的账户地址。
  • -r stc1pz9u7e95gzh0dn3vhw5n5g34dfsxum2pt:是 Bob 的收款识别码(receipt_identifier)。

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

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

starcoin% account show 0x1179ec968815ded9c59775274446ad4c
+----------------------------+------------------------------------------------------------------------------------------+
| account.address            | 0x1179ec968815ded9c59775274446ad4c                                                       |
+----------------------------+------------------------------------------------------------------------------------------+
| account.is_default         | false                                                                                    |
+----------------------------+------------------------------------------------------------------------------------------+
| account.public_key         | 0xfacd584290ee7baea7fe8e22d13332633babca46e77c0ca941b6b5c6266523cb                       |
+----------------------------+------------------------------------------------------------------------------------------+
| account.receipt_identifier | stc1pz9u7e95gzh0dn3vhw5n5g34dfsxum2pt |
+----------------------------+------------------------------------------------------------------------------------------+
| auth_key                   | 0xce10e8b810895d64f3d3fe1cd2307cf61179ec968815ded9c59775274446ad4c                       |
+----------------------------+------------------------------------------------------------------------------------------+
| sequence_number            | 0                                                                                        |
+----------------------------+------------------------------------------------------------------------------------------+
| balances.STC               | 10000                                                                                    |
+----------------------------+------------------------------------------------------------------------------------------+

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

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