跳到主要内容

第一笔链上交易

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

前提

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

提交交易的几个步骤

  • 启动 Starcoin 控制台,并连接到 Starcoin 节点,详细步骤请查阅如何与 Starcoin 控制台交互
  • 创建两个账户:Alice 和 Bob,详细步骤请查阅账号管理
  • 给 Alice 账户充钱。
  • 提交转账交易:Alice 给 Bob 打钱。

创建账户

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

使用 Faucet 给账户充钱

Dev 环境下,可以利用 faucet 给账户充钱。Faucet 只在 devtest 网络中存在,以便于开发者做开发和测试。 下面我们通过控制台给 Alice 充钱。

starcoin% dev get-coin -v 100STC

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

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

starcoin% account show 0xf096a2a61d3042774187a462a5394537
{
"ok": {
"account": {
"address": "0xf096a2a61d3042774187a462a5394537",
"is_default": true,
"is_readonly": false,
"public_key": "0x96734ea5015c3e1901b1af3e9c16f42df074c92749988d0563be3f5df65c2da6",
"receipt_identifier": "stc1p7zt29fsaxpp8wsv853322w29xu02slxc"
},
"auth_key": "0x4c9c5a86f958a1a02286e46807df916ff096a2a61d3042774187a462a5394537",
"balances": {
"0x00000000000000000000000000000001::STC::STC": 100000000000
},
"sequence_number": 0
}
}

可以看到 balancessequence_number 有数据了。

提交交易 - 转账

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

account unlock -p <MY-PASSWORD> 0xf096a2a61d3042774187a462a5394537

其中 -p 选项指定的 <MY-PASSWORD> 是创建账户时传入的密码,初始的默认账号密码为空,可以不传递这个参数。

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

starcoin% account transfer -s 0xf096a2a61d3042774187a462a5394537 -r 0xbabb67fa74c24466c500e642c79437de -v 10000 -b

其中:

  • -s 0xf096a2a61d3042774187a462a5394537: 是 Alice 的账户地址。
  • -r 0xbabb67fa74c24466c500e642c79437de:是 Bob 的帐户地址。

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

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

starcoin% account show 0xbabb67fa74c24466c500e642c79437de
{
"ok": {
"account": {
"address": "0xbabb67fa74c24466c500e642c79437de",
"is_default": false,
"is_readonly": false,
"public_key": "0x6b1adad8156edba7d24efa5bb216e8e8f927a3866c875e95a636e6399ae4ed46",
"receipt_identifier": "stc1ph2ak07n5cfzxd3gquepv09phmc0crcec"
},
"auth_key": "0x282d7d31aa5c7daac4fab02c084f896dbabb67fa74c24466c500e642c79437de",
"balances": {
"0x00000000000000000000000000000001::STC::STC": 10000
},
"sequence_number": 0
}
}

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

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