Before we proceed, it is essential to have a basic understanding of programming concepts related to blockchain. This includes familiarity with Ethereum and its associated concepts such as smart contracts, and the Solidity programming language, as well as popular development environments like Remix, Truffle, Hardhat, and others.
Vault-Related
Deposit ETH to vault
Description
Make a deposit to StakeStone vault, and the caller will get STONE tokens as the vault shares.
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "deposit" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "mintAmount" ,
"type" : "uint256"
}
] ,
"stateMutability" : "payable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [ {
"inputs" : [] ,
"name" : "deposit" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "mintAmount" ,
"type" : "uint256"
}
] ,
"stateMutability" : "payable" ,
"type" : "function"
}];
// Deposit 1 Ether.
const DEPOSIT_AMOUNT = 1e18 ;
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .deposit () .send ({
from : "CALLER_ADDRESS" ,
value : BigNumber ( DEPOSIT_AMOUNT ) .toString ( 10 )
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Make a deposit to vault
POST
(RPC Endpoint)
Make a deposit transaction to StakeStone vault.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Make a withdrawal request from vault
Description
Make a withdrawal request from Vault. User could retrieve ETH principal and yields from vault after vault has been settled.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "uint256" ,
"name" : "_shares" ,
"type" : "uint256"
}
] ,
"name" : "requestWithdraw" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "uint256" ,
"name" : "_shares" ,
"type" : "uint256"
}
] ,
"name" : "requestWithdraw" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
// Withdraw 1 STONE.
const WITHDRAW_AMOUNT = 1e18 ;
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .requestWithdraw ( WITHDRAW_AMOUNT ) .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Make a withdrawal request from vault.
POST
(RPC Endpoint)
Make a withdrawal request transaction from vault.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Cancel withdrawal request
Description
Cancel a previous withdrawal request to get pending STONE back.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "uint256" ,
"name" : "_shares" ,
"type" : "uint256"
}
] ,
"name" : "cancelWithdraw" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "uint256" ,
"name" : "_shares" ,
"type" : "uint256"
}
] ,
"name" : "cancelWithdraw" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
// Cancel 1 STONE's withdrawal.
const STONE_AMOUNT = 1e18 ;
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .cancelWithdraw ( STONE_AMOUNT ) .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Cancel withdrawal request
POST
(RPC Endpoint)
Cancel a former withdrawal request to get pending STONE back.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query current STONE price
Description
Query the real-time STONE price(quoted by ETH price).
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "currentSharePrice" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "price" ,
"type" : "uint256"
}
] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [] ,
"name" : "currentSharePrice" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "price" ,
"type" : "uint256"
}
] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .currentSharePrice () .call ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query current STONE price
POST
(RPC Endpoint)
Query the real-time STONE price(quoted by ETH price).
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query historical STONE price
Description
Query the historical STONE price by settlement round (quoted by ETH price).
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "uint256" ,
"name" : "" ,
"type" : "uint256"
}
] ,
"name" : "roundPricePerShare" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "" ,
"type" : "uint256"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [ {
"inputs" : [] ,
"name" : "deposit" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "mintAmount" ,
"type" : "uint256"
}
] ,
"stateMutability" : "payable" ,
"type" : "function"
}];
// Round 1.
const ROUND = 1 ;
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .roundPricePerShare ( ROUND ) .call ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query historical STONE price
POST
(RPC Endpoint)
Query the historical STONE price by settlement round (quoted by ETH price).
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query latest settlement round
Description
Query the latest settlement round of StakeStone vault.
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "latestRoundID" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "" ,
"type" : "uint256"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [] ,
"name" : "latestRoundID" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "" ,
"type" : "uint256"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .latestRoundID () .call ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query latest settlement round
POST
(RPC Endpoint)
Query the latest settlement round of StakeStone vault.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query withdraw fee rate
Description
Query withdraw fee rate of StakeStone vault(multiplied by 1E6).
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "withdrawFeeRate" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "" ,
"type" : "uint256"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StoneVault contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [] ,
"name" : "withdrawFeeRate" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "" ,
"type" : "uint256"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .withdrawFeeRate () .call ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query withdraw fees
POST
(RPC Endpoint)
Query withdraw fee rate of StakeStone vault(multiplied by 1E6).
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Strategy-Related
Query all strategies of the portfolio
Description
Get all smart contract address of strategies.
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "getStrategies" ,
"outputs" : [
{
"internalType" : "address[]" ,
"name" : "addrs" ,
"type" : "address[]"
} ,
{
"internalType" : "uint256[]" ,
"name" : "portions" ,
"type" : "uint256[]"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StrategyController contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [] ,
"name" : "getStrategies" ,
"outputs" : [
{
"internalType" : "address[]" ,
"name" : "addrs" ,
"type" : "address[]"
} ,
{
"internalType" : "uint256[]" ,
"name" : "portions" ,
"type" : "uint256[]"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .getStrategies () .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query all strategies of the portfolio
POST
(RPC Endpoint)
Get all smart contract address of strategies.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query ethers deployed on all strategies
Description
Get ethers amount deployed on all strategies.
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "getAllStrategiesValue" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "_value" ,
"type" : "uint256"
}
] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StrategyController contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [] ,
"name" : "getAllStrategiesValue" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "_value" ,
"type" : "uint256"
}
] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .getAllStrategiesValue () .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query ethers deployed on all strategies
POST
(RPC Endpoint)
Get ethers amount deployed on all strategies.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query ethers deployed on certain strategy
Description
Get ether amount deployed on certain strategy.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "address" ,
"name" : "_strategy" ,
"type" : "address"
}
] ,
"name" : "getStrategyValue" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "_value" ,
"type" : "uint256"
}
] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need StrategyController contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "address" ,
"name" : "_strategy" ,
"type" : "address"
}
] ,
"name" : "getStrategyValue" ,
"outputs" : [
{
"internalType" : "uint256" ,
"name" : "_value" ,
"type" : "uint256"
}
] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .getStrategyValue () .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query ethers deployed on certain strategy
POST
(RPC Endpoint)
Get ether amount deployed on certain strategy.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Vote-Related
Query all proposals
Description
Get all smart contract address of proposals.
Function Description
ABI Description
Copy {
"inputs" : [] ,
"name" : "getProposals" ,
"outputs" : [
{
"internalType" : "address[]" ,
"name" : "addrs" ,
"type" : "address[]"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need Proposal contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [] ,
"name" : "getProposals" ,
"outputs" : [
{
"internalType" : "address[]" ,
"name" : "addrs" ,
"type" : "address[]"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .getProposals () .call ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query all proposals
POST
(RPC Endpoint)
Get all smart contract address of proposals.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Query vote info on certain proposal
Description
Get the proposal details.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "address" ,
"name" : "" ,
"type" : "address"
}
] ,
"name" : "proposalDetails" ,
"outputs" : [
{
"internalType" : "address" ,
"name" : "proposer" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "deadline" ,
"type" : "uint256"
} ,
{
"internalType" : "uint256" ,
"name" : "support" ,
"type" : "uint256"
} ,
{
"internalType" : "uint256" ,
"name" : "oppose" ,
"type" : "uint256"
} ,
{
"internalType" : "uint256" ,
"name" : "executedTime" ,
"type" : "uint256"
} ,
{
"internalType" : "bytes" ,
"name" : "data" ,
"type" : "bytes"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need Proposal contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "address" ,
"name" : "" ,
"type" : "address"
}
] ,
"name" : "proposalDetails" ,
"outputs" : [
{
"internalType" : "address" ,
"name" : "proposer" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "deadline" ,
"type" : "uint256"
} ,
{
"internalType" : "uint256" ,
"name" : "support" ,
"type" : "uint256"
} ,
{
"internalType" : "uint256" ,
"name" : "oppose" ,
"type" : "uint256"
} ,
{
"internalType" : "uint256" ,
"name" : "executedTime" ,
"type" : "uint256"
} ,
{
"internalType" : "bytes" ,
"name" : "data" ,
"type" : "bytes"
}
] ,
"stateMutability" : "view" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .proposalDetails ( PROPOSAL_ADDRESS ) .call ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Query vote info on certain proposal
POST
(RPC Endpoint)
Get the proposal details.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Vote for a proposal
Description
Voting for a proposal by staking with STONE.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "address" ,
"name" : "_proposal" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "_poll" ,
"type" : "uint256"
} ,
{
"internalType" : "bool" ,
"name" : "_flag" ,
"type" : "bool"
}
] ,
"name" : "voteFor" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need Proposal contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "address" ,
"name" : "_proposal" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "_poll" ,
"type" : "uint256"
} ,
{
"internalType" : "bool" ,
"name" : "_flag" ,
"type" : "bool"
}
] ,
"name" : "voteFor" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .voteFor ( PROPOSAL_ADDRESS , STONE_AMOUNT , true ) .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Vote for a proposal
POST
(RPC Endpoint)
Voting for a proposal by staking with STONE.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Retrieve STONEs voted for certain proposal
Description
Voting for a proposal by staking with STONE.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "address" ,
"name" : "_proposal" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "_poll" ,
"type" : "uint256"
} ,
{
"internalType" : "bool" ,
"name" : "_flag" ,
"type" : "bool"
}
] ,
"name" : "voteFor" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need Proposal contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "address" ,
"name" : "_proposal" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "_poll" ,
"type" : "uint256"
} ,
{
"internalType" : "bool" ,
"name" : "_flag" ,
"type" : "bool"
}
] ,
"name" : "voteFor" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .voteFor ( PROPOSAL_ADDRESS , STONE_AMOUNT , true ) .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Vote for a proposal
POST
(RPC Endpoint)
Voting for a proposal by staking with STONE.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}
Retrieve STONEs voted for all proposals
Description
Voting for a proposal by staking with STONE.
Function Description
ABI Description
Copy {
"inputs" : [
{
"internalType" : "address" ,
"name" : "_proposal" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "_poll" ,
"type" : "uint256"
} ,
{
"internalType" : "bool" ,
"name" : "_flag" ,
"type" : "bool"
}
] ,
"name" : "voteFor" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}
Samples
Copy // Javascript example
var Web3 = require ( 'web3' );
const BigNumber = require ( 'bignumber.js' );
const web3 = new Web3 ( "RPC Endpoint Url" );
// Need Proposal contract address
const CONTRACT_ADDRESS = "" ;
const ABI = [{
"inputs" : [
{
"internalType" : "address" ,
"name" : "_proposal" ,
"type" : "address"
} ,
{
"internalType" : "uint256" ,
"name" : "_poll" ,
"type" : "uint256"
} ,
{
"internalType" : "bool" ,
"name" : "_flag" ,
"type" : "bool"
}
] ,
"name" : "voteFor" ,
"outputs" : [] ,
"stateMutability" : "nonpayable" ,
"type" : "function"
}];
var contract = new web3 . eth .Contract ( ABI , CONTRACT_ADDRESS );
contract . methods .voteFor ( PROPOSAL_ADDRESS , STONE_AMOUNT , true ) .send ({
from : "CALLER_ADDRESS"
} , function (error , result){
if ( ! error) {
console .log ( 'Response:' , result);
} else {
console .log (error);
}
});
HTTP Request Example
Vote for a proposal
POST
(RPC Endpoint)
Voting for a proposal by staking with STONE.
More details on how to send a transaction via RPC endpoint could be found here, https://ethereum.org/en/developers/docs/apis/json-rpc/#eth_sendrawtransaction
Request Body
200: OK Success response.
Copy {
"id":64,
"jsonrpc": "2.0",
"result": "TRANSCACTION HASH with 0x prefix"
}