[LiquidApps] DAPP 网络使用攻略之二:如何使用

2019-09-20  本文已影响0人  荆凯_EOS42

使用 DAPP 网络所提供的服务创建了具有可扩展性的 dApp,如何在麒麟网络上部署?这篇文章会介绍如何做。

cover.jpg

DAPP 网络使用攻略之一 中, 我们一起了解了如何在智能合约中启用vRAM,借助这一去中心化的、可扩展的存储解决方案创造 dApp。

但是,想要将这些用到了 vRAM 或其他 LiquidApps 服务的 dApp 部署到公共网络上供用户使用,我们还有其他的事情要做:使用 DAPP 服务提供商(DSP) 所提供的服务包为你的 dApp 提供资源,方法是选择好对应的服务包,然后抵押相应数量的 DAPP 代币给 DSP。

如果使用 vRAM 服务,我们要用到的服务包是 ipfsservice1。在主网上,我们见到这项服务发展迅速,截至9月7日,70个可用的 DSP 服务包中有 49 个是 ipfsservice1 类型,提供了 vRAM 服务,帮助 dApp 扩展存储能力。

image.png

(截图来自dsphq.io, 你可以通过社区所提供的其他若干 DSP 浏览器查看:https://bihu.com/article/1606984716)

在本文之中,我们不会在主网上部署。但是,我们在测试网络上的部署过程将与主网部署大致相同。

为了在麒麟测试网上部署支持 vRAM 的 dApp,我们需要建立一个帐户,并为它提供一些测试网 EOS,以便它能够提供部署合约所需的资源。

请注意,帐户仍然需要一些RAM才能部署,因为合约会保存在RAM中,而不能保存在vRAM中。vRAM通常情况下可以降低应用程序对RAM的需求,但它不会消除这些需求。

首先:在麒麟测试网上设置好账号

image.png

使用 https://www.cryptokylin.io ,创建账号很轻松,你也可以查看该网站了解更多内容。在本教程中,我们创建了账号 1111dsptutor,你也可以创建自己的账号,方法是访问链接:

http://faucet.cryptokylin.io/create_account?your_account

(请记得将链接中问号后面的内容替换为你想要创建的账号名)

然后,保存好你所收到的信息,页面中会提供给你两对不同的密钥,分别对应新创建账号的owner权限和active权限。

请注意,如果遇到 404 的页面报错,或者其他错误,请稍后再试,或者前往 CryptoKylin Telegram 电报群 寻求帮助。

创建账号之后,你可以从麒麟测试网络的水龙头获得测试代币,非常容易:

http://faucet.cryptokylin.io/get_token?1111dsptutor

同样的,请将问号后面的账号名替换为你自己在麒麟测试网上的账号名,系统会发送 100 EOS测试代币至您的账号之中。

(可选操作) 将新创建的麒麟测试网账号添加到 Scatter 钱包

image.png

点击 Scatter 桌面版窗口的右上方的齿轮图标。然后,从设置菜单中选择“网络(Network)”选项。该操作为危险操作,所以需要你输入密码确认。

image.png
  1. 在 “Your Networks(你的网络)” 之中,输入如下内容:
    Name: Kylin testnet
    Host: 178.62.36.41
    Port:8888
    Protocol:http
    Chain ID: 5fff1dae8dc8e2fc4d5b23b2c7665c97f9e9d8edf2b6485a86ba311c25639191

点击 “Add” 就可以成功添加测试网络。

  1. 将你保存的麒麟测试网账号的私钥导入 Scatter 之中。

  2. 由于 Scatter 中的默认网络设置不包含麒麟测试网,可能你需要手动操作 “关联账号”,输入你的账号名称和权限,例如 11111dsptutor@active1111dsptutor@owner

设置完成后,你可以通过区块链浏览器查看你的麒麟网测试账号情况,可以访问 https://kylin.eosx.io

image.png

(可选操作) 若尚未设置 cleos,可以现在处理

为了使用 cleos 购买 RAM、注册服务包和部署合约,你需要先将私钥导入到 cleos 钱包之中,使用的命令为: cleos wallet import。 如果你还没有设置好,可以参照 EOSIO 开发者文档之中的前三步之中的指南进行设置: https://developers.eos.io/eosio-home/docs/wallets

查看麒麟测试网上的 DSP 所提供的可用 vRAM

通过DSP门户网站,也可以方便地查看麒麟测试网上的 DSP 的信息。例如,DSP HQ 在右上方可以进行切换至麒麟网络: https://dsphq.io/?network=kylin, Bloks.io 也提供了麒麟测试网的 DSP 页面: kylin.bloks.io/dsp

image.png

在这一篇教程中,我们只需要看到vRAM包。其他服务,如LiquidOracles (oracleservic)、LiquidScheduler (cronservices)等也提供了对应的软件包。

不同的 vRAM 服务包提供了不同的代币抵押数量要求、最小赎回周期(通常为1小时)、服务包配额和服务包周期。

在此处,我们选择了 “heliosselene” 这一 DSP 所提供的ipfsservice1 服务包 “package1”。 根据该服务包 min_stake_quantity(最小抵押数量)的要求,我们抵押 10 个 DAPP 代币。现在,准备就绪,我们可以看看这一服务包如何为我们提供服务了。

从麒麟测试网上获取 DAPP 测试代币, 请访问网页 kylin-dapp-faucet.liquidapps.io

image.png

输入账号名,你可以获得 1000 个麒麟测试网上的 DAPP 代币! 不过,这里我可不敢打包票,您可能会遇到人机验证的情形。您可以通过https://kylin.eosx.io或另一个区块链浏览器中查看你的账号情况。

获得了 DAPP 代币,是时候开始使用服务包了

你可以根据需要,将下文中的相关参数替换为您所选择的麒麟网端点(endpoint), DSP 和 DSP 服务包以及您的账号名。

在本系列文章的第一部分中,我们解压了 cardgame 的合约。请确保您当前文件夹所在位置为解压 cardgame 的文件夹。

使用 cleos

1. 首先, 设置参数,方便后续操作

请注意,如果遇到 404 的页面报错,或者其他错误,请稍后再试,或者前往 CryptoKylin Telegram 电报群 寻求帮助。

将代码片段中的 1111dsptutor 替换为你的用户名:

$ KYLIN_TEST_ACCOUNT=1111dsptutor
$ export KYLIN_TEST_PUBLIC_KEY=EOS52EvB8SfrxFGmq3cSeMHiAXpjyaBQkgX28A5pxtr8ETXkJT2Ss
$ export $EOS_ENDPOINT=https://kylin-dsp-2.liquidapps.io

注意: 将来,您可以在终端的浏览器中简化前面的步骤,如下所示:


$ export EOS_ENDPOINT=https://kylin-dsp-2.liquidapps.io

// 创建 Kylin 账号, 请将 `1111dsptutor` 替换为你自己的账号名,并保存好私钥
$ export KYLIN_TEST_ACCOUNT=curl http://faucet.cryptokylin.io/create_account?1111dsptutor

// 获得active 公钥
$ export KYLIN_TEST_PUBLIC_KEY=curl http://faucet.cryptokylin.io/get_token?$KYLIN_TEST_ACCOUNT

// 获得测试代币
$ curl http://faucet.cryptokylin.io/get_token?$KYLIN_TEST_ACCOUNT
$ curl http://faucet.cryptokylin.io/get_token?$KYLIN_TEST_ACCOUNT

// 获得更多的 CPU 和 NET 资源
$ cleos -u $EOS_ENDPOINT system delegatebw $KYLIN_TEST_ACCOUNT $KYLIN_TEST_ACCOUNT "50.0000 EOS" "100.0000 EOS" -p $KYLIN_TEST_ACCOUNT@active

您可以再次使用最后两个命令来获得更多Kylin EOS,如果需要,还可以增加当前测试帐户的CPU和Net资源。访问https://kylin-dapp-faucet.liquidapps.io获得更多的 DAPP 测试代币,就像我们之前做的那样。

2. 选择服务包

$ cleos -u $EOS_ENDPOINT push action dappservices stake "{\"from\":\"$KYLIN_TEST_ACCOUNT\",\"provider\":\"heliosselene\",\"service\":\"ipfsservice1\",\"quantity\":\"10.0000 DAPP\"}" -p $KYLIN_TEST_ACCOUNT@active

备注:如果不使用变量 $KYLIN_TEST_ACCOUNT, 也可以使用如下方式发送数据:'['1111dsptutor','heliosselene','ipfsservice1','package1']'

但是,使用 $KYLIN_TEST_ACCOUNT 执行此操作将把这些文字字符作为数据发送,因此我们需要对数据使用双引号,即,我们需要对数据中的键值对都使用转义符 \" 的方式,如示例代码中所示。

3. 抵押 DAPP 代币

$ cleos -u $EOS_ENDPOINT push action dappservices stake "{\"from\":\"$KYLIN_TEST_ACCOUNT\",\"provider\":\"heliosselene\",\"service\":\"ipfsservice1\",\"quantity\":\"10.0000 DAPP\"}" -p $KYLIN_TEST_ACCOUNT@active

抵押之后,意味着我们可以获得由 heloisselene 这一 DSP 的 IPFS 服务(vRAM 服务包)所提供的资源了。

部署 dApp 合约

Let’s give it a try so we can see how much RAM we’ll need to deploy.

We’ll proceed using cleos for the rest of the article, but if you chose to use Scatter and a web tool such as bloks.io, all of these actions can be performed there, as well.

让我们试试看,看看部署合约需要消耗多少 RAM。

在本文的其余部分,我们将继续使用 cleos 方式,但是如果您选择使用 Scatter 和 bloks 之类的 web 工具同样奏效。

**1) **In order to set our code as a smart contract code, we need to run set contract:

1 为了将本地的代码设置为智能合约代码,需要运行命令:

$ cleos -u $EOS_ENDPOINT set contract $KYLIN_TEST_ACCOUNT ./contracts/eos/cardgame -p $KYLIN_TEST_ACCOUNT@active
image.png

上图中我们注意到,并未部署成功,命令行界面的报错信息中,告知了我们需要多少 RAM。

毕竟,这是麒麟网络嘛, RAM 免费的,我们多买一点好了:


$ cleos -u $EOS_ENDPOINT system buyram $KYLIN_TEST_ACCOUNT $KYLIN_TEST_ACCOUNT "50.0000 EOS" -p $KYLIN_TEST_ACCOUNT@active

2) 重新部署合约

这一次购买了足够的 RAM 之后,我们可以重新运行命令,部署我们使用了 vRAM 服务的智能合约:

$ cleos -u $EOS_ENDPOINT set contract $KYLIN_TEST_ACCOUNT ./contracts/eos/cardgame -p $KYLIN_TEST_ACCOUNT@active

部署结果如图所示:

image.png

3) 最后,配置代码的 eosio.code 权限,完成合约部署

$ cleos -u $EOS_ENDPOINT set account permission $KYLIN_TEST_ACCOUNT active "{\"threshold\":1,\"keys\":[{\"weight\":1,\"key\":\"$KYLIN_TEST_PUBLIC_KEY\"}],\"accounts\":[{\"permission\":{\"actor\":\"$KYLIN_TEST_ACCOUNT\",\"permission\":\"eosio.code\"},\"weight\":1}]}" owner -p $KYLIN_TEST_ACCOUNT@active

测试刚部署的智能合约

虽然资源问题很少出现,不过,保险起见,你也可以先多获取一点资源:

cleos -u $EOS_ENDPOINT system delegatebw $KYLIN_TEST_ACCOUNT $KYLIN_TEST_ACCOUNT "250.0 EOS" "200.0 EOS" -p $KYLIN_TEST_ACCOUNT@active

我们不会在这里编写全面的测试,但是我们至少可以从一个简单的cleos push操作开始试下登录功能。

在如下代码中,请用您自己的用户名替换掉 1111dsptutor

$ cleos -u $EOS_ENDPOINT push action 1111dsptutor login '['1111dsptutor']' -p 1111dsptutor@active

Bingo! 可以了! 如果你想尝试一些其他的纸牌游戏动作,这里有更多的例子, 同样,记得替换下账号名:

'['1111dsptutor']' -p 1111dsptutor@active
cleos -u $EOS_ENDPOINT push action $KYLIN_TEST_ACCOUNT playcard '['1111dsptutor','2']' -p 1111dsptutor@active

在下一篇文章中,我们会研究强大的 LiquidOracles 预言机服务,并将其添加到智能合约中。

更多信息,请访问我们正在陆续更新中的技术文档https://docs.liquidapps.io/,如果您有任何问题,请在我们的电报群或我们的开发者电报群中提问,也可以加入中文微信群及中文 LiquidApps 开发者交流群沟通。

上一篇下一篇

猜你喜欢

热点阅读