Code Monkey home page Code Monkey logo

coneys-rewards-on-chia's People

Contributors

coneys-network avatar

Watchers

 avatar  avatar

coneys-rewards-on-chia's Issues

multiple-signatures多签投票模式尝试

目前效果

我们已经在chialisp语言编写的硬币代码上实现了较为通用的多签投票功能:多签投票 + 多签少数服从多数 + 可配投票通过阈值 + 可保留一票否决权(在v14的代码中有所体现)

多签投票相关的想法与实现

v3: 首先,我们的币只是随便就能花掉的,需要有投票人同意,才能花费币或操作币;v3中的是投票功能最初的想法和尝试,设计一个类似密码的验证功能,柯里化时传入密码,花费币时solution中的密码必须验证正确,才能花费币或操作币。

v5: 因为参与投票的不止一人,于是在verify函数中,用递归实现验证多个投票人hash的功能。

v6: 把多个投票人的hash写死在代码里肯定是不科学的。所以改为在柯里化的时候传入投票人hash的list,solution中必须包含所有投票人hash才算通过。

v10: 多签投票是需要多个人都传入自己的hash,并且传入的hash可能是无序的,所以需要判断传入的hash值,在柯里化的hash值列表中存在。

v11: 考虑到只传入投票人的hash值是不够的的,他们必须做出投票,设计成了验证键值对的方式。验证hash值存在的同时,也要验证该hash值的投票值为1,这样才算投了一个同意票,并且需要全部人员都同意,才可以操作该硬币。

v12: 考虑到需要加入一票否决权的功能,所以在柯里化的时候,多加了两个参数,IS_RETAIN_VOTE_POWER是否需要保留一票否决权,POWER_VOTER掌握否决权的人的hash。

v14: 因为有些时候,不可能需要全部投票人都同意才算通过。我们需要实现有少数服从多数的功能,所以在柯里化时加一个参数,VOTING_THRESHOLD票数阈值,来控制需要多少票才算通过的功能

其他想法与实现

v1:加入了input_cmd输入操作码参数,方便以后加入添加有关币的操作,可以设定不同操作不同的操作码。
v2:设计花费币的时候找零的功能。
v4:尝试加入了verify函数,来实现验证的功能。
v7:限制花费币的过程里,找零后余额必须大于0。
v8:加入了销毁功能,销毁操作是把硬币花费出去,自身不生成新币;可以花费到黑洞钱包中去,也就相当于这个币销毁了。
v9:加入了花费金额必须大于0的限制条件,防止恶意传入负数的花费金额。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.