使用 RUST 语言开发了一个区块链

2019-03-19 10:02:52 +08:00
 cr4fun

本地搭建 SDAG 区块链并完成转账

按照本文档的步骤执行,你可以在本地搭建一个 SDAG 区块链,并使用 SDAG 的 jssdk 构建一个命令行钱包来查询和转账。

1 安装 docker 社区版

ubuntu 用户请参考如下安装方式:

https://docs.docker.com/install/linux/docker-ce/ubuntu/

centos 用户请参考如下安装方式:

https://docs.docker.com/install/linux/docker-ce/centos/

fedora 用户请参考如下安装方式: https://docs.docker.com/install/linux/docker-ce/fedora/

Mac 用户请参考如下安装方式:

https://docs.docker.com/docker-for-mac/install/

windows 用户请参考如下安装方式:

https://docs.docker.com/docker-for-windows/install/

2 把当前用户添加到 docker 用户组

sudo gpasswd -a $(whoami) docker

3 获得 SDAG 区块链镜像

docker pull registry.cn-beijing.aliyuncs.com/sdag/sdag_testnet_dev:latest

4 启动 SDAG 区块链

docker run --rm -d --name sdag -p 6615:6615 -p 8080:8080 registry.cn-beijing.aliyuncs.com/sdag/sdag_testnet_dev

5 打开区块链浏览器

http://localhost:8080

6 获得创始后有数字资产的助记词

sudo docker exec -it sdag cat data/sdg/settings.json

返回的结果类似:

拷贝下助记词,供第 7 步使用.

fade aunt crack express uncle fit valley faculty candy toddler buzz pink

7 发送数字资产

在本地计算机(非 docker 里),新建一个名为 samples 的文件夹。

mkdir samples
cd samples

初始化 npm,并安装 SDAG 的 jssdk:sdagwallet.js

npm init
npm isntall sdagwallet.js

新建一个名为 mnemonic.js 的文件,输入以下内容:

该文件使用 mnemonic.js 生成随机助记词

const { default: Wallet } = require("sdagwallet.js");
let wallet = new Wallet();
var mnemonic = wallet.generateMnemonic();
console.log(mnemonic);

执行它:

node mnemonic.js

得到类似下图的结果:

拷贝助记词,并建立一个名为 alice.js 的文件,在 mnemonic = "" 中填入助记词,内容如下:

const { default: Wallet } = require("sdagwallet.js");
//import Wallet from 'sdagwallet.js';
let wallet = new Wallet();

const mnemonic = "april warrior alarm actress end story social palm desert twist knife future";

wallet.configHub("ws://localhost:6615");
wallet.loginWithMnemonic(mnemonic).then(() => {
    var address = wallet.getAddress();
    console.log("address",address);
    wallet.getBalance().then((balance) => {
        console.log("balance",balance);
    });
});

执行它:

node alice.js

返回的结果如下,能看到 alice 的地址,及余额。

拷贝 alice 的地址,留作 scott 给 alice 转账时使用。

HKIRYKXL65TTTBLIW3CXIYQHGPBX3YGI

新建一个名为 scott.js 的文件,并且把助记词配置为 "fade aunt crack express uncle fit valley faculty candy toddler buzz pink" (在第 6 步时从 docker 里得到的)

const { default: Wallet } = require("sdagwallet.js");
//import Wallet from 'sdagwallet.js';
let wallet = new Wallet();

const mnemonic = "fade aunt crack express uncle fit valley faculty candy toddler buzz pink";

wallet.configHub("ws://localhost:6615");
wallet.loginWithMnemonic(mnemonic).then(() => {
    var address = wallet.getAddress();
    console.log("address",address);
    wallet.getBalance().then((balance) => {
        console.log("balance",balance);
    });
});

执行它

node scott.js

返回的结果如下:

现在,新建一个名为 scott-to-alice.js 的文件,内容如下:

const { default: Wallet } = require("sdagwallet.js");
//import Wallet from 'sdagwallet.js';
let wallet = new Wallet();
const mnemonic = "fade aunt crack express uncle fit valley faculty candy toddler buzz pink";
wallet.configHub("ws://localhost:6615");
wallet.loginWithMnemonic(mnemonic).then(async () => {
    await wallet.getBalance();
    wallet.send({
        to: 'HKIRYKXL65TTTBLIW3CXIYQHGPBX3YGI',
        amount: 10,
        text: 'from scott to alice'
    }).then(() => {
        console.log("ok");
    }).catch((err) => {
        console.log(err);
    });
});

执行它

node scott-to-alice

返回的结果如下:

这说明已经完成转账,接下来,重新获得 alice 的余额:

node alice

返回结果如下:

重新获得 scott 的余额:

node scott

返回结果如下:

转账结束了,上述源码位于: https://github.com/smart-dag/samples.git

2296 次点击
所在节点    分享创造
2 条回复
bokchoys
2019-03-20 02:02:05 +08:00
我发现我最近想做什么
v 站上就有帖子……
cr4fun
2019-03-20 09:29:54 +08:00
@bokchoys 一起探讨啊,已经开源代了,我微信 cr4fun

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/546039

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX