Skip to content

BaerChain vote transaction

woodbaer edited this page Aug 23, 2019 · 5 revisions

投票交易(vote)

1. 请求Json文件说明(vote_data.json)

	{
		"from":"e523e7c59a0725afd08bc9751c89eed6f8e16dec",
		"to":"0x00000000000000000000000000000000766f7465",
		"value":"0x0",
		"data":[
		{
			"type":1,
			"m_from":"e523e7c59a0725afd08bc9751c89eed6f8e16dec",
			"m_to":"0x4eb60bfab454b5aaece4e8759e62ed36266fde39",
			"m_vote_type":5,
			"m_vote_numbers":"0xa"
		}
		],
		"chainId":"0x1",
		"nonce":"0x0",
		"gas":"0x13880",
		"gasPrice":"0x5"
	}
from     : 类型为string,vote交易发起地址
to       : 类型为string,固定地址,不能更改
value    : 类型为string,默认为"0"
data     : 投票交易数据,数组结构
           > type           : 类型为int,交易识别号,类型固定为1,表示vote交易
           > m_from         : 类型为string,vote交易发起地址,与from地址相同
           > m_to           : 类型为string,接受vote交易的地址
           > m_vote_type    : 类型为int,说明:
           		      (1)可选值有(1:买票 2:卖票 5:投票 6:取消投票)
                              (2)本案例类型为5,表示为指定地址投票
                              (3)注意:投票操作前需要进行(1:买票操作),以保证自己有票能投
                              (4)注意:在买票和卖票时m_from和m_to的地址需要相同
           > m_vote_numbers : 类型为string,票数
           		      注意:票数以16进制传值,即如果买10票,需要传"0xa" 
chainId  : 类型为string,16进制,链ID,必须和链创世chainId相同
nonce    : 类型为string,16进制,nonce值,每次执行后+1
gas      : 类型为string,16进制,为交易执行提供的 gas 整数
gasPrice : 类型为string,16进制,用于每一个支付 gas 的 gasPrice 整数  
  • 备注:当to填其他地址,且data不为空时,默认to为调用的合约地址,且将from中转出value(value如果也有值)的值到to中,一般禁止此种操作

2. vote投票交易说明 返回目录

  • 各用户可以通过花费BRC去购买选票,但只有在候选人集合中的地址才能被投票

  • 查询候选人集合

    • 指令

      curl -d '{"jsonrpc":"2.0","id":9,"method":"brc_getElector","params":["latest"]}' http://10.0.6.122:33050
      
    • 返回结果,如下,表明此时有6个候选人可以被投票

          {
        "id": 9,
        "jsonrpc": "2.0",
        "result": {
        	"electors": [{
        	"address": "0xcccc7a30bf688c060524dfd759fe2627ed3387bc",
        	"vote_num": "0x0"
        	}, {
        	"address": "0xdb1874c67cf3628690c795f0553e0e2904b02ffd",
        	"vote_num": "0x0"
        	}, {
        	"address": "0xc3eb4d16a99e0a04de3242729a759a45809d2628",
        	"vote_num": "0x0"
        	}, {
        	"address": "0x02b3d7c2f9f53f5bbcb3794da5282566f5632b46",
        	"vote_num": "0x0"
        	}, {
        	"address": "0xd15c70cb560cea42995c9f52858778aa8b08c1c1",
        	"vote_num": "0x0"
        	}, {
        	"address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
        	"vote_num": "0x0"
        	}]
        }
          }
      

3. vote交易过程讲解 返回目录

  • 根据实际情况分别执行:(1:买票, 2:卖票, 5:投票 , 6:取消投票)

    • 指令

      ./cmdWallet -j ./vote_data.json -s 10.0.6.122:33050
      
    • cmdWallet 执行文件获取

    cd cpp-lsac/build : 进入目录
    cmake ..          : 执行指令
    make              : 执行指令   
    cd cpp-lsac/build/wallet/cmdWallet : 此目录下可找到刚才编译好的cmdWallet执行文件
    
3.1 买票
  • 若执行1:买10票

  • 可用brc_getBalance接口查询买票后自己拥有的票数,以下均为可以此接口

curl -d '{"jsonrpc":"2.0","id":9,"method":"brc_getBalance","params":["6e8c3d142894db1e06a026497f6b506c49069908","latest"]}' 10.0.6.122:33050
  • 查询结果
  {
  	"id": 22,
  	"jsonrpc": "2.0",
  	"result": {
  	    "Address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
  	    "BRC": "0xa4d87b3d34e00",
  	    "FBRC": "0x0",
   	    "FBalance": "0x2710",
  	    "balance": "0xa4d88ddd452c0",
  	    "ballot": "0xa", 	(表示自己拥有的票数,此时为10票,如果无票,则为"0x0")
    	    "cookieinsummury": "0x0",
  	    "nonce": "0x2",
  	    "poll": "0x0",("0x0"表示得票数为0票)
  	    "vote": null
  	}
  }
3.2 卖票
  • 若执行2: 卖出1票

  • 查询结果

{
	"id": 22,
	"jsonrpc": "2.0",
	"result": {
	    "Address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
    "BRC": "0x997a1b0ac38df",
    "FBRC": "0x0",
    "FBalance": "0x0",
    "balance": "0xa4d88ddcdc3ec",
    "ballot": "0x9",(表示自己拥有的票数,此时为9票,表明卖出了1票)
    "cookieinsummury": "0x0",
    "nonce": "0x3",
    "poll": "0x0",("0x0"表示得票数为0票)
    "vote": null
}

3.3 投票
  • 5:投票3票

  • 若执行5: 投票3票

  • 本次测试中0x6e8c3d142894db1e06a026497f6b506c49069908为候选人地址,本次测试自己给自己投票

  • 查询结果

 {
 	"id": 22,
  	"jsonrpc": "2.0",
 	"result": {
 	    "Address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
 	    "BRC": "0x997a1b0ac38df",
   	"FBRC": "0x0",
 	    "FBalance": "0x0",
 	    "balance": "0xa4d88ddcb885c",
 	    "ballot": "0x6",(表示自己拥有的票数,此时为6票,表明投出3票)
 	    "cookieinsummury": "0x0",
 	    "nonce": "0x4",
 	    "poll": "0x3",(得票数,此时为3票,表明被投票3票)	
 	    "vote":[{
 		"Address": "0x6e8c3d142894db1e06a026497f6b506c49069908", (投票地址)
 		"vote_num": "0x3" (该地址投的票数)
 	    }]
 	}
 }
3.4 撤消投票 返回目录
  • 若执行6,取消1票
  • 查询结果
 {
 	"id": 22,
  	"jsonrpc": "2.0",
 	"result": {
 	    "Address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
 	    "BRC": "0x997a1b0ac38df",
 	    "FBRC": "0x0",
 	    "FBalance": "0x0",
 	    "balance": "0xa4d88ddc352a4",
 	    "ballot": "0x7",(表示自己拥有的票数,此时为7票,表明撤回1票)
 	    "cookieinsummury": "0x0",
 	    "nonce": "0x8",
 	    "poll": "0x2",(得票数,此时为2票,表明被投票2票)
 	    "vote": [{	  (记录哪些地址给自己投的票数)
 		"Address": "0x6e8c3d142894db1e06a026497f6b506c49069908",(投票地址)
 		"vote_num": "0x2" (该地址投的票数)
 	     }]
 	}
 }

4. vote过程查询说明 返回目录

4.1 查询候选人集合

  • 指令

    • 通过上述操作后,再次查询候选人集合,查看变化
    curl -d '{"jsonrpc":"2.0","id":9,"method":"brc_getElector","params":["latest"]}' http://10.0.6.122:33050
    
  • 返回结果

    {
    	"id": 9,
    	"jsonrpc": "2.0",
    	"result": {
    	     "electors": [{
    		  "address": "0xcccc7a30bf688c060524dfd759fe2627ed3387bc",
    		  "vote_num": "0x0"
    	     }, {
    		  "address": "0xdb1874c67cf3628690c795f0553e0e2904b02ffd",
    		  "vote_num": "0x0"
    	    }, {
    		  "address": "0xc3eb4d16a99e0a04de3242729a759a45809d2628",
    		  "vote_num": "0x0"
    	    }, {
    		  "address": "0x02b3d7c2f9f53f5bbcb3794da5282566f5632b46",
      		  "vote_num": "0x0"
    	    }, {
    		  "address": "0xd15c70cb560cea42995c9f52858778aa8b08c1c1",
    		  "vote_num": "0x0"
    	    }, {
    		  "address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
    		  "vote_num": "0x2" (可以看到此时改地址已得2票)
    	    }]
    	}
    }
    

4.2 查询投票具体情况 返回目录

  • 指令

    • 查询某地址的投票具体情况
    curl -d '{"jsonrpc":"2.0","id":9,"method":"brc_getVoted","params":["0x6e8c3d142894db1e06a026497f6b506c49069908","latest"]}' http://10.0.6.122:33050
    
  • 返回结果

    {
    	"id": 9,
    	"jsonrpc": "2.0",
    	"result": {
    		"total_voted_num": "0x3",
    		"vote": [{
    			"address": "0x6e8c3d142894db1e06a026497f6b506c49069908",
    			"voted_num": "0x2"
    		}, {
    			"address": "0xdb1874c67cf3628690c795f0553e0e2904b02ffd",
    			"voted_num": "0x1"
    		}]
    	}
    }
    
    • 说明 : 地址0x6e8c3d142894db1e06a026497f6b506c49069908给自己(0x6e8c3d142894db1e06a026497f6b506c49069908)投了2票, 给地址0xdb1874c67cf3628690c795f0553e0e2904b02ffd投了1票

4.3 查询候选人得票数 返回目录

  • 指令

    • 查询指定候选人得票数
    curl -d '{"jsonrpc":"2.0","id":9,"method":"brc_getObtainVote","params":["0x6e8c3d142894db1e06a026497f6b506c49069908","latest"]}' http://10.0.6.122:33050
    
  • 返回结果

    {
    	"id": 9,
    	"jsonrpc": "2.0",
    	"result": {
    		"addrsss": "0x6e8c3d142894db1e06a026497f6b506c49069908",
    		"obtain_vote": "0x2"
    	}
    }
    
    • 说明 : 地址0x6e8c3d142894db1e06a026497f6b506c49069908此时总得票数为2票

4.4 查询地址拥有的可投票数 返回目录

  • 指令
curl -d '{"jsonrpc":"2.0","method":"brc_getBallot","params":["0x6e8c3d142894db1e06a026497f6b506c49069908", "latest"],"id":1}' http://10.0.6.122:33050
  • 返回结果
{
    "id": 1,
    "jsonrpc": "2.0",
    "result": "0x7" (表明该地址现在拥有7票)
}

Clone this wiki locally