계산 공식에 의하면, reward_balance 와 recent_claims 값이 필요합니다. steem.api.getRewardFundAsync함수를 사용해서 필요한 값들을 가져옵니다.
1 2 3 4 5 6 7 8
// Reward Fund 가져오기 var rewardFund = await steem.api.getRewardFundAsync('post')
// reward balance var rewardBalance = rewardFund.reward_balance.split(' ')[0]
// recent claims var recentClaims = rewardFund.recent_claims
SDB 가격 가져오기
steem.api.getCurrentMedianHistoryPriceAsync 함수를 사용해서 base와 quote값을 가져옵니다. 그리고 quote에 따른 STEEM 가격을 계산합니다.
1 2 3 4 5 6 7
// Current Median History Price 가져오기 var price = await steem.api.getCurrentMedianHistoryPriceAsync() var base = price.base.split(' ')[0] var quote = price.quote.split(' ')[0]
// SBD / STEEM의 가격 비율 var steemPrice = base /quote
Global Properties 가져오기
steem.api.getDynamicGlobalPropertiesAsync 함수를 사용하여 total_vesting_fund_steem와 total_vesting_shares값을 가져옵니다. 참고로 이 두 값은 조회 할 때마다 계속 바뀝니다.
1 2 3 4 5 6 7 8
// Global Properties 가져오기 varglobal = await steem.api.getDynamicGlobalPropertiesAsync()
// total Vesting Fund Steem var totalVestingFundSteem = global.total_vesting_fund_steem.split(' ')[0]
// total Vesting Shares var totalVestingShares = global.total_vesting_shares.split(' ')[0]
계정 정보 가져오기
마지막으로 steem.api.getAccountsAsync 함수를 사용하여, 계정 정보를 가져옵니다. username 변수의 값은 본인의 ID로 수정해야 합니다. 아래 코드에서는 ‘anpigon’ 이 사용되었습니다.
계정이 보유하고 있는 **스팀파워(steemPower)**와 **보팅파워(votingPower)**를 계산합니다. **보팅가중치(voteWeight)**는 *100%*라고 가정합니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
// 계정 정보 가져오기 var username = 'anpigon'// 조회할 유저ID var account = (await steem.api.getAccountsAsync([username]))[0]
// 나의 Steem 계산하기 var vestingSteem = steem.formatter.vestingSteem(account, global)
// 대여받은 Steem 계산하기 var receivedVestingShares = account.received_vesting_shares.split(" ")[0] var receivedVestingSteem = totalVestingFundSteem * (receivedVestingShares / totalVestingShares)
// 보유한 총 Steem(나의 Steem + 대여받은 Steem) var steemPower = vestingSteem + receivedVestingSteem
var votingPower = account.voting_power // 현재 보팅 파워 var voteWeight = 1e4// 보팅 가중치(100%)