dappconnect-voting-sdk/packages/core
Szymon Szlachtowicz c1b326ab9c
Add waku init poll mock (#5)
2021-08-10 14:55:47 +02:00
..
src Add waku init poll mock (#5) 2021-08-10 14:55:47 +02:00
test Add waku init poll mock (#5) 2021-08-10 14:55:47 +02:00
types/protons Integrate protobuf poll init (#3) 2021-08-09 14:53:39 +02:00
.eslintrc.json Repo initialization 2021-08-06 14:50:36 +02:00
.mocharc.json Repo initialization 2021-08-06 14:50:36 +02:00
README.md Integrate protobuf poll init (#3) 2021-08-09 14:53:39 +02:00
package.json Introduce PollInitMsg model (#4) 2021-08-09 16:00:42 +02:00
prettier.config.js Repo initialization 2021-08-06 14:50:36 +02:00
tsconfig.json Repo initialization 2021-08-06 14:50:36 +02:00

README.md

Gassless voting over waku

Waku Voting

Objects of type of WakuVoting, hold their own Waku objects and also store list of polls and votes for later use.

Creating instance of WakuVoting:

WakuVoting constructor expects name of DApp and address of a token, also as optional parameter can take custom Waku object.

    import WakuVoting from 'core'

    const wakuVoting = new WakuVoting('myDapp', '0x00000000000')

objects of type WakuVoting expose functions:

createTimedPoll(signer: JsonRpcSigner, question:string, answers: string[], pollType: enum, minToken?: BigNumber, endTime?: number) getTimedPolls() sendTimedPollVote(signer: JsonRpcSigner, pollHash: string, selectedAnswer:number, sntAmount?: number)

Polls

Creating time-limited poll

To create a poll user has to send a message over waku network on specific topic

/{dapp name}/waku-polling/timed-polls-init/proto

For a poll to be started waku message has to have specific fields:

message PollInit {
    bytes owner = 1; // Address of a poll owner/initializer
    int64 timestamp = 2; // Timestamp of a waku message
    string question = 3;// Question of a poll
    repeated string answers = 4; // Possible answers to poll
    enum PollType {
        WEIGHTED = 0;
        NON_WEIGHTED = 1;
    }
    PollType pollType = 5 // type of poll
    optional bytes minToken = 6 // amount of token needed for NON_WEIGHTED poll to be able to vote
    int64 endTime = 7 // UNIX timestamp of poll end
    bytes signature = 8 // signature of all above fields
}