Gotoken项目专区接入及使用文档

Gotoken旨在运用区块链信息技术,构建更具生命力的自组织系统

本文记录了新项目对接进入Gotoken平台的操作指南及构建链上投票工具需要提供的相关信息和数据接口

在申请接入专区后,请填写信息收集表单

一、开设项目专区

  1. 注册GoToken 账户

  2. 在信息需求表单中填入项目管理员的账户和专区用于支付提案的Token

  3. 表单提交后3个工作日内,GoToken将会把该账户设立为管理员账户。管理员将具备编辑/修改项目专区描述、编辑/修改项目专区治理规则,删除专区内留言等权限

  4. 用管理员账户登录GoToken,点击创建提案专区

  5. 填写项目相关信息,并点击提交

二、修改提案专区规则

  1. 在提案专区内选择要修改的专区

  1. 点击展开可以看到项目专区全部描述,点击修改编辑项目专区规则

三、对接链上治理工具

GoToken自身的链上投票通过一组基于以太坊的多签合约实现。对于基于不同底层系统的项目,GoToken将依据需求,提供对项目的链上治理工具支持。

在对接过程中,需要项目方基于自身的治理原则,在自己的系统中(可以是以太坊或自己的主链),搭建一套投票治理的工具。GoToken平台在对接项目时,需要项目提供数据接口,Gotoken将调用链上数据,实现前端交互。

需要项目方提供的数据和接口包括:

  1. 非以太坊的系统
  • 需要提供一个区块链节点,用于访问智能合约。包括节点API,调用节点需要的API的文档,调用方式的说明以及可能的SDK
  • 投票合约地址,以及完整的合约ABI
  1. 如果是以太坊系统,则需要提供一个合约地址。
    GT会通过metamask对合约进行调用,如果不是以太坊系统,则GT会在页面上展示二维码及交易数据,由项目方提供的钱包或插件进行实际的投票操作。

四、链上投票合约结构参考
GoToken自身的投票目前通过白名单地址多签进行实现

一般来说,投票合约应包含以下方法:

  1. 创建投票: function createVote(bytes32 _hash, uint _start_height, uint _end_height);
  2. 修改投票信息: function changeVoteInfo(bytes32 _hash, uint _start_height, uint _end_height, string memory announcement);
  3. 投票表决: function vote(uint64 id, bytes32 _hash, string memory _value)
  4. 投票是否结束:function isVoteDetermined(bytes32 _hash) public view returns (bool)
  5. 投票的结果:function checkVoteValue(bytes32 _hash) public view returns(string memory value)
  6. 投票的信息: function voteInfo(bytes32 _hash) public view returns(bool determined, uint start_height, uint end_height, address owner, string memory announcement, string memory value)
  7. 除上述方法外,投票合约还应包含以下事件(event)
  • event VoteCreate(bytes32 _hash, uint _start_height, uint _end_height);*
  • event VoteChange(bytes32 _hash, uint _start_height, uint _end_height, string announcement);
  • event VotePass(bytes32 _hash, string _value);