手把手教你领取 AVA 测试网奖励|零基础教程

本文是一篇 AVA 测试网运行的傻瓜教程,既然说是傻瓜教程,那就是针对编程零基础的小白们了。要运行一个节点,很多人觉得需要一个服务器,看起来像这样:

手把手教你领取 AVA 测试网奖励|零基础教程

或者是这样

手把手教你领取 AVA 测试网奖励|零基础教程

但是对 AVA 来说,普通的计算机就已经能够做节点了,毕竟是完全不同的底层设计(对,就是这么牛 B)。那如何从 0 开始运行一个 AVA 节点呢?

你需要的是:一台 Mac 电脑,Linux 大神请直接走攻略:https://docs.ava.network/

(P.S:Windows 选手可以选择右上角退出,教程正在路上,下一期播出!)

首先,AVA 采用 Go 语言,因此我们先要在计算机里面下载 Go 语言,登录官网下载界面:https://golang.org/dl/

下拉找到 go1.13.11 找到红线所示的包,点击蓝字下载

手把手教你领取 AVA 测试网奖励|零基础教程

把它下载下来。之后打开安装,一路鼠标点击直到安装完成

这时候打开 Terminal

手把手教你领取 AVA 测试网奖励|零基础教程

输入

    go version

你应该会得到这样的反馈:

    go version go1.13.11 darwin/amd64

由于 Go 的一些代码库是被墙掉的,因此我们需要修改链接参数 Goproxy (可以查看网页:https://goproxy.io/zh/

    go env -w GO111MODULE=on  
    go env -w GOPROXY=https://goproxy.io,direct

可以输入

go env

查看,若发现 GOPROXY 一栏为

    GOPROXY="https://goproxy.io,direct"

就是可以的,之后就畅通无阻

之后设置 GOPATH,也就是设置文件路径

    export GOPATH=$HOME/go

可以用

    echo $GOPATH

查看,若显示 (name 是你的电脑名)

    /Users/name/go

即可,之后就可以输入

    go get -v -d github.com/ava-labs/gecko/...

若出现类似下面的情况,则可以考虑直接从 Github 上用 Git 下载

    package google.golang.org/grpc/health: unrecognized import path "google.golang.org/grpc/health" (https fetch: Get https://google.golang.org/grpc/health?go-get=1: dial tcp 216.239.37.1:443: i/o timeout)  

Git 下载方式 (若上一步成功不需要考虑这个)

    git clone https://github.com/ava-labs/gecko.git

等待下载完成,接下来你的电脑里就已经装好了 AVA 的代码,剩下的就是启动!

进入文件夹:

    cd $GOPATH/hide/github.com/ava-labs/gecko

    git pull && bash ./scripts/build.sh

等待一会,等到出现 build successful 的时候,输入:

    ./build/ava

若出现:

手把手教你领取 AVA 测试网奖励|零基础教程

恭喜,你已经在本地运行了 AVA 的节点,之后就需要等待一段时间的编译,大概需要十几分钟时间。

若运行:

    curl -X POST --data '{  
        "jsonrpc":"2.0",  
        "id"     :2,  
        "method" :"avm.getBalance",  
        "params" :{  
            "address":"X-6cesTteH62Y5mLoDBUASaBvCXuL2AthL",  
            "assetID":"AVA"  
        }  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/X
    结果为:  
    {  
        "jsonrpc":"2.0",  
        "id"     :2,  
        "result" :{  
            "balance": 0,  
            "utxoIDs":null  
        }  
    }

那么就是编译成功!若结果为 404 则请继续等待,或联系我们解决问题。

可以随时使用 control + C 来关掉进程,若希望再次重启,配置好 GOPATH,重新进入文件夹,再次 ./build/ava 即可。

这个时间我们可以做一些节点的准备,我们可以开始进行下一步:获取 AVA Token

首先,创建自己的 KeyStore,在 YOUR USERNAME 和 YOUR PASSWORD 处填写自己的用户名和密码,密码需要大于 10 位数

    curl -X POST --data '{  
         "jsonrpc": "2.0",  
         "id": 1,  
         "method": "keystore.createUser",  
         "params": {  
             "username": "YOUR USERNAME HERE",  
             "password": "YOUR PASSWORD HERE"  
         }  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/keystore

返回结果为:

    {  
         "jsonrpc":"2.0",  
         "result":{"success":true},  
         "id":1  
    }

创建地址(username 和 password 填写自己的地址):

    curl -X POST --data '{  
        "jsonrpc":"2.0",  
        "id"     :2,  
        "method" :"avm.createAddress",  
        "params" :{  
            "username":"YOUR USERNAME HERE",  
            "password":"YOUR PASSWORD HERE"  
        }  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

返回结果为:

    {  
        "jsonrpc":"2.0",  
        "id":2,  
        "result" :{  
            "address":"X-5TQr5hSAZ8ZKuSaYLg5sr4VwvcvwKZ1Mg"  
        }  
    }

address 是自己的地址。获取地址,并且自己记录好这个地址,以及之前创建 KeyStore 的信息。

之后用 AVA 的水龙头中填写自己的地址获取测试代币,可以用下面的指令看自己地址的余额或者去浏览器查看。

水龙头:https://faucet.ava.network/

区块链浏览器:https://explorer.ava.network/

    curl -X POST --data '{  
        "jsonrpc":"2.0",  
        "id"     :3,  
        "method" :"avm.getBalance",  
        "params" :{  
            "address":"X-5TQr5hSAZ8ZKuSaYLg5sr4VwvcvwKZ1Mg",  
            "assetID"  :"AVA"  
        }  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

然后我们就要在网络里搞事情了!

首先创建 P-Chain,也就是验证者所在的链的地址:

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.createAccount",  
        "params": {  
            "username":"YOUR USERNAME HERE",  
            "password":"YOUR PASSWORD HERE"  
        },  
        "id": 1  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

得到的结果,address 处为自己的 AVA P-chain 地址:

    {  
        "jsonrpc": "2.0",  
        "result": {  
            "address": "Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH"  
        },  
        "id": 1  
    }

既然是 PoS,那就要给地址打钱才能作为合格的验证者,填写自己的地址、用户名和密码(注意后续操作都需要确认地址、用户名和密码都是自己创建的):

    curl -X POST --data '{  
        "jsonrpc":"2.0",  
        "id"     :1,  
        "method" :"avm.exportAVA",  
        "params" :{  
            "to":"Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH",  
            "amount": 10000,  
            "username":"YOUR USERNAME HERE",  
            "password":"YOUR PASSWORD HERE"  
        }  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/X

这个操作会返回一个交易 ID,之后等待几秒交易确认,或者在浏览器查看。下一步操作(也是倒数第二步),这是将节点引入 AVA 的操作:

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.importAVA",  
        "params": {  
            "username":"YOUR USERNAME HERE",  
            "password":"YOUR PASSWORD HERE",  
            "to":"Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH",  
            "payerNonce":1  
        },  
        "id": 1  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

返回类似下面这样:

    {  
        "jsonrpc": "2.0",  
        "result": {  
            "tx": "1117xBwcr5fo1Ch4umyzjYgnuoFhSwBHdMCam2wRe8SxcJJvQRKSmufXM8aSqKaDmX4TjvzPaUbSn33TAQsbZDhzcHEGviuthncY5VQfUJogyMoFGXUtu3M8NbwNhrYtmSRkFdmN4w933janKvJYKNnsDMvMkmasxrFj8fQxE6Ej8eyU2Jqj2gnTxU2WD3NusFNKmPfgJs8DRCWgYyJVodnGvT43hovggVaWHHD8yYi9WJ64pLCvtCcEYkQeEeA5NE8eTxPtWJrwSMTciHHVdHMpxdVAY6Ptr2rMcYSacr8TZzw59XJfbQT4R6DCsHYQAPJAUfDNeX2JuiBk9xonfKmGcJcGXwdJZ3QrvHHHfHCeuxqS13AfU"  
        },  
        "id": 1  
    }

发行交易

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.issueTx",  
        "params": {  
            "tx":"1117xBwcr5fo1Ch4umyzjYgnuoFhSwBHdMCam2wRe8SxcJJvQRKSmufXM8aSqKaDmX4TjvzPaUbSn33TAQsbZDhzcHEGviuthncY5VQfUJogyMoFGXUtu3M8NbwNhrYtmSRkFdmN4w933janKvJYKNnsDMvMkmasxrFj8fQxE6Ej8eyU2Jqj2gnTxU2WD3NusFNKmPfgJs8DRCWgYyJVodnGvT43hovggVaWHHD8yYi9WJ64pLCvtCcEYkQeEeA5NE8eTxPtWJrwSMTciHHVdHMpxdVAY6Ptr2rMcYSacr8TZzw59XJfbQT4R6DCsHYQAPJAUfDNeX2JuiBk9xonfKmGcJcGXwdJZ3QrvHHHfHCeuxqS13AfU"  
        },  
        "id": 1  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

之后确认 P-Chain 上的 AVA 账户:

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.getAccount",  
        "params":{  
            "address":"Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH"  
        },  
        "id": 1  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/bc/P

返回结果类似下面这样:

{
"jsonrpc":"2.0",
"result":{
"address":"Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH",
"nonce":"1",
"balance":"10000"
},
"id":1
}

最后一个步,运行 admin.getNodeID 骤获得你的节点 ID:

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "admin.getNodeID",  
        "params":{},  
        "id": 1  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/admin

返回结果包含一个 nodeID,保存下来。

    {  
        "jsonrpc": "2.0",  
        "result": {  
            "nodeID": "ARCLrphAHZ28xZEBfUL7SVAmzkTZNe1LK"  
        },  
        "id": 1  
    }

之后创建一个成为节点的交易,其中包含节点启动时间、Staking 时长等等参数,

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.addDefaultSubnetValidator",  
        "params": {  
            "id":"ARCLrphAHZ28xZEBfUL7SVAmzkTZNe1LK",  
            "payerNonce":2,  
            "destination":"Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH",  
            "startTime":'$(date --date="10 minutes" +%s)',  
            "endTime":'$(date --date="2 days" +%s)',  
            "stakeAmount":10000  
        },  
        "id": 1  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

返回结果如下:

    {  
        "jsonrpc": "2.0",  
        "result": {  
            "unsignedTx": "111fRKBNoBhBfeGvBzvz6r9dZUKbEnUypM6tjiSyYrWM4ojSTuL2Syxv8cFLphtYaxdM1EA3Aj4yej8ABSfmjb9NMrtxQac9cnWwCER7GHSzFULB25hAtzGtJ8XhsrKcvtpAM8FwjRzg3Bg1q6V8GTKGMC219bYMETS48GMFGh4nts1Jsf246rjZ26r1Vyok8MdnoaxjQWR6cKq"  
        },  
        "id": 1  
    }

注意 id、destination 都是自己的 id 和地址,payerNonce 是改地址进行交易的 Nonce 次数,若没有其他操作则为 2,然后对这个交易签名,将上述获得的 unsighedTx :

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.sign",  
        "params": {  
            "tx":"111fRKBNoBhBfeGvBzvz6r9dZUKbEnUypM6tjiSyYrWM4ojSTuL2Syxv8cFLphtYaxdM1EA3Aj4yej8ABSfmjb9NMrtxQac9cnWwCER7GHSzFULB25hAtzGtJ8XhsrKcvtpAM8FwjRzg3Bg1q6V8GTKGMC219bYMETS48GMFGh4nts1Jsf246rjZ26r1Vyok8MdnoaxjQWR6cKq",  
            "signer":"Bg6e45gxCUTLXcfUuoy3go2U6V3bRZ5jH",  
            "username":"YOUR USERNAME HERE",  
            "password":"YOUR PASSWORD HERE"  
        },  
        "id": 2  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

返回结果如下,

    {  
        "jsonrpc": "2.0",  
        "result": {  
            "Tx": "111fRKBNoBhBfeGvBzvz6r9dZUKbEnUypM6tjiSyYrWM4ojSTuL2Syxv8cFLphtYaxdM1EA3Aj4yej8ABSfmjb9NMrtxQac9cnWwCER7GHSzFULB4RoAjStfe26qQxhS91KvCCX3WBLmpyvNXHzgWk3uJP45cPv15RHGymFboPUcxNTwGij1NgQpKPcL4YxcDnKvNjrcQzKiXAz"  
        },  
        "id": 2  
    }

向整个网络发出这一笔交易,声明你就是这个节点了:

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.issueTx",  
        "params": {  
            "tx":"111fRKBNoBhBfeGvBzvz6r9dZUKbEnUypM6tjiSyYrWM4ojSTuL2Syxv8cFLphtYaxdM1EA3Aj4yej8ABSfmjb9NMrtxQac9cnWwCER7GHSzFULB4RoAjStfe26qQxhS91KvCCX3WBLmpyvNXHzgWk3uJP45cPv15RHGymFboPUcxNTwGij1NgQpKPcL4YxcDnKvNjrcQzKiXAz"  
        },  
        "id": 3  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

这时候就已经成功了!由于之前设定了 startTime (开始验证的时间),因此在交易发出之后,回到设定的时间开始正式成为网络的验证者,可以通过 platform.getPendingValidators 查看:

    curl -X POST --data '{  
        "jsonrpc": "2.0",  
        "method": "platform.getPendingValidators",  
        "params": {},  
        "id": 4  
    }' -H 'content-type:application/json;' 127.0.0.1:9650/ext/P

返回结果中包含我们的节点 id,说明运行成功, 正在等待开始验证的时间(按照我们刚才的设定是十分钟之后开始验证):

    {  
        "jsonrpc": "2.0",  
        "result": {  
            "validators": [  
                {  
                    "id": "ARCLrphAHZ28xZEBfUL7SVAmzkTZNe1LK",  
                    "startTime": "1584021450",  
                    "endtime": "1584121156",  
                    "stakeAmount": "10000",  
                }  
            ]  
        },  
        "id": 4  
    }

由于我们之前设定了 endTime,在 endTime 的时候节点会退出验证,之后可以通过重复上述步骤再次参与验证。根据经济模型设计,运行时间越长获得的代币奖励也会越高,在主网的时候需要注意哦。

一些链接:

官网:https://avalabs.org/cn

白皮书:https://avalabs.org/whitepapers

Twitter:https://twitter.com/avalabsofficial

开发者 Discord:https://discord.com/invite/ccc8vEP

GitHub:https://github.com/ava-labs

文档:https://docs.avalabs.org/

AVA-X 加速计划:https://www.avalabs.org/ava-x

水龙头:https://faucet.ava.network/

区块链浏览器:https://explorer.ava.network/

如果你有任何问题,欢迎来我们的 Discord 寻求帮助:https://discord.gg/ccc8vEP

进一步了解 AVA Labs,添加⛄️AVA Labs 小助手❄️,回复「入群」加入我们。

手把手教你领取 AVA 测试网奖励|零基础教程

手把手教你领取 AVA 测试网奖励|零基础教程

来源链接:mp.weixin.qq.com