• 2020年9月18日 10:36

    Dan和Jim正在为10月的RChain年度大会紧锣密鼓地开发链上投票功能: RV2020,今天我们先睹为快,试着走一下整个流程。beta测试版从这里进入:

    https://rv2020-beta.netlify.app/,目前链上对接的是测试网。

    网站首页

    1.png

    你的浏览器必须先安装Metmask,并且导入了已经在Coop登记的投票专用私钥。点击投票页面右上角的Sign In, MetaMask与投票页面连接。

    连接账户

    2.png

    登录后,测试选票的信息会展示出来。

    显示选票

    3.png

    测试选票上有四个候选董事及一条提案。每个候选董事有三个选择:反对,支持和弃权。

    选票说明
    测试选票的相关说明见:
    gist.github.com/dckc/ca240e5336d0ee3e4f5cf31c4f629a30

    4.png

    看,候选人都是名人。

    对候选人进行选择后,会生成对应的智能合约代码:

    match("1111kwFVksomdFsTXuExGm9CbwKRn2ZK2SQvwKM7SvZCPxX8fT9gb", 1, [
      "1111TnFUN7eZBWXp3QQACQRRxpcS5uH5Bpf67vikWhA5e3F6ikAmU",
      "1111JoeZHDYXqyAgo89VaidQnp7W7M9pvdkFUJTqEBU7SHKx6WF2z",
      "1111krbAKSbyGA9vfa7w4K2pKAxZZn6qjaVEduDLWotDZ8HLt2aXR"
    ]) {
        (revAddrFrom, amount, toAddrs) => {
      new rl(`rho:registry:lookup`), RevVaultCh, ListOpsCh in {
        rl!(`rho:rchain:revVault`, *RevVaultCh) |
        rl!(`rho:lang:listOps`, *ListOpsCh) |
        for (@(_, RevVault) <- RevVaultCh;
            @(_, ListOps) <- ListOpsCh) {
          new vaultCh, revVaultkeyCh, txfr1,
            deployerId(`rho:rchain:deployerId`),
            deployId(`rho:rchain:deployId`)
          in {
                @RevVault!("findOrCreate", revAddrFrom, *vaultCh) |
                @RevVault!("deployerAuthKey", *deployerId, *revVaultkeyCh) |
                for (@vault <- vaultCh; key <- revVaultkeyCh) {
                  match vault {
                    (true, vault) => {
                      @ListOps!("parMap", toAddrs, *txfr1, *deployId) |
                      contract txfr1(@revAddrTo, return) = {
                        new vaultTo in {
                          @RevVault!("findOrCreate", revAddrTo, *vaultTo) |
                          for (_ <- vaultTo) {
                            @vault!("transfer", revAddrTo, amount, *key, *return)
                          }
                        }
                      }
                    }
                    err => {
                      deployId!((false, "REV vault cannot be found or created."))
                    }
                  }
                }
          }
        }
      }
    }
    }
    

    这段代码其实是分别对为候选人单独设立的智能合约打1个REV,用币投票。一币一票,但是多投无效。

    点击 Sign and Submit按钮就会进入签名环节,自动跳转到Metamask,使用你的私钥进行签名。

    签名

    5.png

    签名后的数据会上链,在页面的右下角会显示:
    Checking result ...............

    过一段时间,信息会变成:
    ✓ (true, true, true, true) // cost: 549849
    表示投票成功。

    选票统计
    在前端页面并不能看到选票统计的功能,选票统计代码在这里:
    github.com/rchain-community/rv2020/blob/master/src/cli/tally.js

    选票的制作
    RV2020 设置了通用的选票格式,采用json格式,所以可以用它很方便地设计自己的投票。github.com/rchain-community/rv2020/blob/master/src/web/ballotexample.json

    
    {
        "Member Swag": {
            "shortDesc": "The Item of Business I want to propose is to provide all new members with stickers and t-shirts with the RChain logo on it as part of their membership onboarding package.",
            "docLink": "https://docs.google.com/docs/SWAG.doc",
            "yesAddr": "11112i8bYVDYcm4MSbY3d1As28uY151xoMS7AyiTvZ2YmNJ8Nw13v9",
            "noAddr": "11112uGayGEi57D44Drq3V4iw5WWyfXbcVvsDangRTE7TaR3J4U4FD"
        },
        "Board: DaD": {
            "shortDesc": "Daffy Duck for Board Member",
            "yesAddr": "1111TnFUN7eZBWXp3QQACQRRxpcS5uH5Bpf67vikWhA5e3F6ikAmU",
            "noAddr": "11112Cwtg2Bs4WUAYrXhL9xZXXSXr9Gn62Cty39RhUaBnqjrKkqwAZ"
        },
        "Board: DoD": {
            "shortDesc": "Donald Duck for Board Member",
            "yesAddr": "1111rbdV9Lsw6DyMSq8ySXDacX7pRUxmVGoYho9gGtfZcQYFdAN42",
            "noAddr": "1111JoeZHDYXqyAgo89VaidQnp7W7M9pvdkFUJTqEBU7SHKx6WF2z"
        },
        "Board: WEC": {
            "shortDesc": "Wile E. Coyote for Board Member",
            "yesAddr": "11112gUFvJR6JBDYJURETaWUBpEDa1EyjgRHFncEfQ4hGECnciPnhw",
            "noAddr": "11112aoa6NLYomYZro566XZVGEXyCDqeqDcp8Pzg81Ckuws6SexC99"
        },
        "Board: RR": {
            "shortDesc": "Road Runner for Board Member",
            "yesAddr": "1111krbAKSbyGA9vfa7w4K2pKAxZZn6qjaVEduDLWotDZ8HLt2aXR",
            "noAddr": "1111swBFUPVRwR4ugkDBCvrLwPeR1621B1cHQf3cAkNxt3Zad2eac"
        }
    }
    

    项目代码库:
    github.com/rchain-community/rv2020

    离RChain年度大会还有不到1个月的时间,投票功能还在不断的迭代中,预计会和RChat功能一起发布。


    欢迎关注 “Rholang中文社区” 公众号

    欢迎开发者加入 “RChain开发者” 微信群。加群请加lowbird微信,拉你入群。非开发者请勿加,会有一轮测试,通过者方可入群。

    5.png

    PNG, 131.3 KB, 被 Dimworm上传于2020年9月18日

    4.png

    PNG, 272.3 KB, 被 Dimworm上传于2020年9月18日

    3.png

    PNG, 84.9 KB, 被 Dimworm上传于2020年9月18日

    2.png

    PNG, 69.2 KB, 被 Dimworm上传于2020年9月18日

    1.png

    PNG, 95.5 KB, 被 Dimworm上传于2020年9月18日