EOSIO开发区块链DApp之智能合约 (2)

为了增强开发体验,我为Visual Studio Code(VSCode)创建了一个属性文件c_cpp_properties.json,告诉它如何查找头文件。该文件需要存储在.vscode目录中,如下所示:

EOSIO开发区块链DApp之智能合约

.vscode/c_cpp_properties文件内容如下:

{ "configurations": [ { "name": "Linux", "includePath": [ "${workspaceFolder}/**", "~/eos/contracts", "~/opt/boost/include" ], "defines": [], "compilerPath": "/usr/bin/clang++-4.0", "cStandard": "c11", "cppStandard": "c++17", "intelliSenseMode": "clang-x64" } ], "version": 4 } 启动EOSIO

一直在使用配置良好的虚拟机(在第1部分中提到)。要启动单节点Testnet服务器:

$ nodeos -e -p eosio --plugin eosio::wallet_api_plugin --plugin eosio::chain_api_plugin --plugin eosio::history_api_plugin --access-control-allow-origin=* --contracts-console

单击此处获取nodeos参数的更多信息。

创建帐户

下一个任务是解锁默认钱包。EOSIO将密钥对存储在钱包中。每次服务器重启或每15分钟需要解锁一次。解锁钱包:

$ cleos wallet unlock --password ${wallet_password}

我们需要分别创建一个所有者密钥对和活动密钥对。然后将该私钥导入钱包。键入以下命令:

$ cleos create key # Create an owner key $ cleos create key # Create an active key $ cleos wallet import ${private_owner_key} $ cleos wallet import ${private_active_key}

不要忘记在某个地方记录这些密钥对。

接下来的任务是创建一个新的帐户来保存选举智能合约。 键入以下命令:

$ cleos create account eosio election ${public_owner_key} ${public_active_key}

此外,为投票模拟创建两个公民:

$ cleos create account eosio voter1 ${public_owner_key} ${public_active_key} $ cleos create account eosio voter2 ${public_owner_key} ${public_active_key} 部署智能合约

输入以下命令上传选举智能合约:

$ cleos set contract election ../election -p election

结果类似下图:

EOSIO开发区块链DApp之智能合约

运行智能合约

我们可以尝试运行合约。

1.运行version操作

$ cleos push action election version '' -p election

我们可以从nodeos检查控制台输出:

EOSIO开发区块链DApp之智能合约

2.增加选举候选人

$ cleos push action election addc '["Hillary Clinton"]' -p election $ cleos push action election addc '["Donald J. Trump"]' -p election

3.显示存储在区块链中的候选数据库

$ cleos get table election election candidate

结果如图所示:

EOSIO开发区块链DApp之智能合约

4.模拟投票(两位选民都被投票给唐纳德·J·特朗普)

$ cleos push action election vote '["voter1", 1]' -p voter1 $ cleos push action election vote '["voter2", 1]' -p voter2

如果voter1再次投票:

$ cleos push action election vote '["voter1", 0]' -p voter1

EOSIO 将返回一个例外:

EOSIO开发区块链DApp之智能合约

5.查看投票结果

$ cleos get table election election candidate

EOSIO开发区块链DApp之智能合约

如你所见,候选人“Donald J. Trump”的投票数为2.这意味着选举智能合约正在工作!

这就是EOS开发dapp的第二部分。安利个EOS智能合约与DApp开发入门:

在下一部分中,我将创建一个Web应用程序,用于演示Web访问者和区块链之间的交互。

源代码在这里github repo

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwgfp.html