Akash 测试网 3 挑战1-4攻略

[转载]原文章:Akash Testnet 3 Week1 挑战1-3攻略 — Ericet

这次挑战的任务列表:https://docs.google.com/spreadsheets/d/1uIvJYbbPnpWH48NqJaFZHcTn8OolIaiA5nKcMLDeS0E/edit#gid=0

任务表格:https://docs.google.com/forms/d/e/1FAIpQLSfYGRuXMUje3IOAb66XYXtlomHJjM2am9iTwansuYwylAfr-w/viewform

设置安装

1.安装Akash CLI

cd ~/
AKASH_VERSION=v0.15.0-rc14
curl https://raw.githubusercontent.com/ovrclk/akash/master/godownloader.sh | sh -s -- "$AKASH_VERSION"

修改 /etc/environment 文件

vi /etc/environment

把/root/bin 加到文件最后

最后结果如下:

PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/root/bin"

让修改生效

source /etc/environment

检查Akash CLI是否安装成功

akash version

显示以下内容就代表成功

v0.15.0-rc14

设置一些参数

AKASH_NET="https://raw.githubusercontent.com/ovrclk/net/master/edgenet"
export AKASH_KEYRING_BACKEND=os
export AKASH_NODE="$(curl -s "$AKASH_NET/rpc-nodes.txt" | shuf -n 1)"
export AKASH_CHAIN_ID="$(curl -s "$AKASH_NET/chain-id.txt")"

2. 创建钱包

为了后面的任务方便,创建2个钱包

AKASH_KEY_NAME1=key1
AKASH_KEY_NAME2=key2
akash keys add $AKASH_KEY_NAME1
akash keys add $AKASH_KEY_NAME2
export AKASH_ACCOUNT_ADDRESS1="$(akash keys show $AKASH_KEY_NAME1 -a)"
export AKASH_ACCOUNT_ADDRESS2="$(akash keys show $AKASH_KEY_NAME2 -a)"

3.领取测试币

网站: http://55ma08d6b9aht4gtovcih95dps.ingress.edgenet-1.ewr1.aksh.pw/

网站不太好领取,可以用脚本领取: https://replit.com/@ericet/AkashTestnet3Faucetjs#index.js

挑战1

挑战要求给提案3投票

akash tx gov vote 3 yes --from $AKASH_KEY_NAME1 --fees 5000uakt -y

提交成功后,从返回的数据里找到txhash,复制hash到挑战1的表格,提交就完成了

挑战2.1

挑战2.1有4个任务:

  • 第一个:Let a different address spend your tokens to deploy. Authorize a second wallet to spend from your wallet*
akash tx deployment authz grant $AKASH_ACCOUNT_ADDRESS2 50000000uakt --from $AKASH_ACCOUNT_ADDRESS1  --fees 5000uakt -y

提交成功后,从返回的数据里找到txhash,复制hash到挑战2的表格的任务1

  • 第二个:Have a second address authorize you to spend it’s tokens on a deployment*
akash tx deployment authz grant $AKASH_ACCOUNT_ADDRESS1 50000000uakt --from $AKASH_ACCOUNT_ADDRESS2  --fees 5000uakt -y

提交成功后,从返回的数据里找到txhash,复制hash到挑战2的表格的任务2

  • 第三个:Create a deployment*

创建证书

akash tx cert generate client --from $AKASH_KEY_NAME1 --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5
akash tx cert generate client --from $AKASH_KEY_NAME2 --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5

发布证书

akash tx cert publish client --from $AKASH_KEY_NAME1 --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.15 -y
akash tx cert publish client --from $AKASH_KEY_NAME2 --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.15 -y

获取deploy.yaml文件

curl -s https://raw.githubusercontent.com/mando222/testnetSDL/main/deploy.yaml > deploy.yaml

创建部署

akash tx deployment create deploy.yaml --from $AKASH_KEY_NAME1 --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5 -y

从返回的数据中找到txhash和dseq号码。把txhash填到表格的任务3处

  • 第四个:Cancel Deployment*

上面的任务获得的dseq号码填入下面命令

akash tx deployment close --dseq <DSEQ号码> --from $AKASH_KEY_NAME1 --fees 5000uakt -y

从返回的数据中获得txhash,填入到任务4处

完成上面这4的任务挑战2.1就完成了,但是Akash的表格可能出错了,后面还有2个挑战2.5的任务需要填写。你可以填写N/A

挑战2.5

  • 任务1: Have a second address authorize you to spend it’s tokens on a deployment using the Authorize Spend feature.

在挑战2.1的第二个任务中,你已经授权第二个钱包给第一个钱包权限部署合约,接下来只需部署就行了

创建部署

akash tx deployment create --depositor-account $AKASH_ACCOUNT_ADDRESS2 --from $AKASH_ACCOUNT_ADDRESS1 deploy.yaml --fees 5000uakt -y

提交成功后,从返回的数据里找到txhash,复制hash到挑战2.5的表格的任务1处

  • 任务2:See if you can do any other actions with tokens authorized from another wallet

尝试转账

akash tx bank send $AKASH_ACCOUNT_ADDRESS2 
 <任意地址> 10000000uakt --fees 5000uakt --from $AKASH_KEY_NAME1 --fees 5000uakt -y

提交成功后,从返回的数据里找到txhash,复制hash到挑战2.5的表格的任务2处

挑战3.1

任务要求部署一个低于1 uakt 每区块价格的网站

修改一下deploy.yaml,降低配置

---
version: "2.0"

services:
  web:
    image: ovrclk/lunie-light
    expose:
      - port: 3000
        as: 80
        to:
          - global: true

profiles:
  compute:
    web:
      resources:
        cpu:
          units: 0.1
        memory:
          size: 256Mi
        storage:
          size: 256Mi
  placement:
    westcoast:
      pricing:
        web:
          denom: uakt
          amount: 100

deployment:
  web:
    westcoast:
      profile: web
      count: 1   

创建部署

akash tx deployment create deploy.yaml --from $AKASH_KEY_NAME1 --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5 -y

从返回的数据中找到dseq号码,输入下面命令

AKASH_DSEQ=<DSEQ号码>

获取竞标的名单

akash query market bid list --owner=$AKASH_ACCOUNT_ADDRESS1 --node $AKASH_NODE --dseq $AKASH_DSEQ

从名单里选一个价格低于1uakt的provider,然后输入下面命令

AKASH_PROVIDER=<provider-address>

创建租借合约

akash tx market lease create --chain-id $AKASH_CHAIN_ID --node $AKASH_NODE --owner $AKASH_ACCOUNT_ADDRESS1 --dseq $AKASH_DSEQ --provider $AKASH_PROVIDER --from $AKASH_KEY_NAME1 --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5 -y

提交成功后,从返回的数据里找到txhash,复制hash到挑战3.1的表格的任务处

挑战4.1的要求是部署一个可存储的应用(数据库之类的)

https://github.com/ovrclk/awesome-akash 找到数据库类型的应用

我找了MongoDB,并做了一些修改。修改后的文件如下:

---
version: "2.0"

services:
  mongo:
    image: mongo:latest
    expose:
      - port: 27017
        to:
          - global: true
    env:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=rootpassword

profiles:
  compute:
    mongo:
      resources:
        cpu:
          units: 1.0
        memory:
          size: 1Gi
        storage:
          size: 1Gi
  placement:
    akash:
      pricing:
        mongo:
          denom: uakt
          amount: 100

deployment:
  mongo:
    akash:
      profile: mongo
      count: 1
      

复制上面的内容到gist上:https://gist.github.com/ 并保存。复制创建好的gist链接到表格的挑战4.1里,这个挑战就算是完成了(因为上面的SDL我测试过是可以用的,并且表格没要求填部署的tx hash)

如果你找其他数据库类型的应用,按照下面步骤部署测试是否能用。

创建部署文件

https://github.com/ovrclk/awesome-akash 找到数据库类型的应用,创建deploy.yaml 部署文件

创建部署

akash tx deployment create deploy.yaml --from $AKASH_KEY_NAME1 --node $AKASH_NODE --chain-id $AKASH_CHAIN_ID --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5 -y

从返回的数据中找到dseq号码,输入下面命令

AKASH_DSEQ=<DSEQ号码>

获取竞标的名单

akash query market bid list --owner=$AKASH_ACCOUNT_ADDRESS1 --node $AKASH_NODE --dseq $AKASH_DSEQ

如果没获得竞标,那就可能是配置高了,或者价格低了,修改一下再部署试试

如果有获得竞标名单,从名单里选一个provider,然后输入下面命令

AKASH_PROVIDER=<provider-address>

创建租借合约

akash tx market lease create --chain-id $AKASH_CHAIN_ID --node $AKASH_NODE --owner $AKASH_ACCOUNT_ADDRESS1 --dseq $AKASH_DSEQ --provider $AKASH_PROVIDER --from $AKASH_KEY_NAME1 --gas-prices="0.025uakt" --gas="auto" --gas-adjustment=1.5 -y

查看租借合约是否开启

akash query market lease list --owner $AKASH_ACCOUNT_ADDRESS --node $AKASH_NODE --dseq $AKASH_DSEQ

发送Manifest

akash provider send-manifest deploy.yaml --node $AKASH_NODE --dseq $AKASH_DSEQ --provider $AKASH_PROVIDER --home ~/.akash --from $AKASH_KEY_NAME1

如果输出显示Pass,代表成功部署了

获取部署的链接

akash provider lease-status --node $AKASH_NODE --home ~/.akash --dseq $AKASH_DSEQ --from $AKASH_KEY_NAME1 --provider $AKASH_PROVIDER

我部署的mongodb获得的链接是这样子的

{
  "services": {
    "mongo": {
      "name""mongo",
      "available": 1,
      "total": 1,
      "uris": null,
      "observed_generation": 1,
      "replicas": 1,
      "updated_replicas": 1,
      "ready_replicas": 1,
      "available_replicas": 1
    }
  },
  "forwarded_ports": {
    "mongo": [
      {
        "host""provider.edgenet-3.ca.aksh.pw",
        "port": 27017,
        "externalPort": 31628,
        "proto""TCP",
        "available": 1,
        "name""mongo"
      }
    ]
  }
}

连接数据库也没有问题。