区块链 | ETH投票项目

withjeffrey 2019-06-30

区块链投票项目


项目地址

GITHUB


项目说明

区块链投票小项目,主要使用了Nuxt和web3.


项目设计

1. 服务结构

虽然中心化服务器使得合约操作有了中心化风险,但是在当前智能合约性能较弱、功能不完善的时候中心化服务器有利于集中管理、提高服务性能、提供附加服务。

区块链 | ETH投票项目

2. 服务器结构设计

除了基本的用户注册、用户账户信息存储、合约基本信息存储、附加服务如请求加入合约,其余操作均由服务器在区块链上进行操作。数据库中只存储基本信息。

区块链 | ETH投票项目

3. 用户页面设计

提供合约操作的图形化接口,尽可能使用户直观、方便、快捷地进行合约操作,免去不方便地命令行等直接操作。

区块链 | ETH投票项目

4. 数据库设计

数据库只用于存储基本信息,如用户信息、合约信息、请求信息、参与表。其余信息和操作都通过区块链来进行。

区块链 | ETH投票项目


使用说明

1. 登录与注册

区块链 | ETH投票项目

  • 账号密码按要求填写即可,但是注册时会直接用有资产的账户给新建账户转 1ETH,所以需要修改VoteSystem/server/contractOP/contractOP.jsshowMeTheMoney函数中的测试账户

2. 创建投票项目

区块链 | ETH投票项目

  • 由于使用 String 或 bytes 太多会导致 gas 不足,所以存储的数据都限定为 bytes32,也就是只能有限个字符。

3. 创建的合约管理

区块链 | ETH投票项目

  • 点开每一行可以看到所有的提议

4. 首页加入项目

区块链 | ETH投票项目

  • 所有未申请以及未参与的项目都会显示在主页。

5. 请求参加项目

区块链 | ETH投票项目

  • 所有请求参加的项目都在我的请求项中,可以在请求被批准前取消。

6. 请求管理

区块链 | ETH投票项目

  • 所有申请参加属于该用户创建的合约的请求都会显示在管理请求中。

7. 参与的投票

区块链 | ETH投票项目

  • 我参与的显示所有被批准参与的投票。

8. 投票完成

区块链 | ETH投票项目

  • 点击提议可以给合约投票,投票完成后刷新页面重新获取票数。

测试

测试视频

使用ganache-cli作为测试用区块链

相关推荐