LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 币圈百科 > YAS dapp开发教程: 超级节点投票

YAS dapp开发教程: 超级节点投票

2020-06-06 老王区块链 来源:区块链网络

使用vue.js和scatterjs, eosjs2.0开发超级节点投票dapp, 效果图如下:


下面的代码块,是投票的核心代码逻辑:

1.使用eosjs之前,需要先导入scatterjs, eosjs库:

import ScatterJS from "@scatterjs/core"

import ScatterEOS from "@scatterjs/eosjs2"

import { Api } from "eosjs"

import {eosApi, network, rpc} from "@/common/nodes"

2.投票之前需要先获取超级节点列表数据:

// 获取超级节点列表数据

let result = await eosApi.getProducers({ json: true, limit: 100 })

// 计算投票权重

const total_producer_vote_weight = result.total_producer_vote_weight

// 计算投票比例

const onePercent = parseInt(total_producer_vote_weight) / 100

// 超级节点数据在result.rows中,遍历result.rows,过滤掉is_active不等于1的节点(已经注销的节点)

let filterBpNodes = []

result.rows.forEach((item)=>{

// 节点投票数

item.votes = parseInt(calculateEosFromVotes(item.total_votes))

//节点投票比例

item.votes_percentage = (item.total_votes / onePercent).toFixed(3)

// 有效的节点

if (item.is_active === 1) {

filterBpNodes.push(item)

} else {

// 过滤掉无效的节点

if (this.selectBpNodes.indexOf(item.owner) !== -1) {

this.selectBpNodes.remove(item.owner)

}

}

})

3.选中你想投票的节点,发起投票请求

// 获取用户选中的节点

let voteProducers = this.selectBpNodes

// 投票请求的actions数据

let actions = [{

account: "eosio", // 投票合约账号

name: "voteproducer", // 投票合约action

authorization: [{

actor: this.currentAccount, // 用户的yas账号

permission: this.currentPermission // 用户的权限active或owner

}],

data: {

voter: this.currentAccount, // 参与投票的账号,也是当前用户的账号

proxy: "", // 投票代理, 这里不投代理,只投超级节点

producers: voteProducers.sort(), // 用户选中的节点列表,这里需要排序一下,否则无法投票

}

}]

// 发起交易请求

this.getApi().transact({

actions: actions // 请求的actions数据

},{

blocksBehind: 3,

expireSeconds: 30

}).then(res => {

alert("投票成功!")

}).catch(err => {

alert("投票失败: " + err)

})

上面就是投票的核心代码,完整源码地址:https://github.com/wangwei123/eos_yas_learn

如何运行上面的源码项目:

#首先需要安装nodejs,下载地址:https://nodejs.org/en/

#git拉取源码

git clone https://github.com/wangwei123/eos_yas_learn

#进入源码目录

cd eos_yas_learn/yasdapp

#安装项目依赖包

npm install

#运行项目

npm run serve

#运行结果如下

App running at:

- Local: http://localhost:8080/

- Network: http://192.168.43.175:8080/

#在麦子钱包的浏览器地址栏打开http://192.168.43.175:8080,就可以访问dapp了

喜欢本文的币友可以转发,我会继续努力编写更多的区块链技术文章,谢谢大家!

—-

编译者/作者:老王区块链

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...