Skip to main content

Address

0x0000000000000000000000000000000000000805

Supported Methods

Transactions

Signature
cancelProposal(address,uint64)
deposit(address,uint64,tuple[])
submitProposal(address,bytes,tuple[])
vote(address,uint64,uint8,string)
voteWeighted(address,uint64,tuple[],string)

Queries

Signature
getConstitution()
getDeposit(uint64,address)
getDeposits(uint64,tuple)
getParams()
getProposal(uint64)
getProposals(uint32,address,address,tuple)
getTallyResult(uint64)
getVote(uint64,address)
getVotes(uint64,tuple)

Query Examples

Set the current testnet EVM JSON-RPC endpoint and precompile address:
Security note: Use a keystore or hardware wallet for real operations. Do not pass raw private keys directly in shell commands.
export RPC_URL="https://test-json-rpc.cloud.aultblockchain.xyz"
export GOV_PRECOMPILE="0x0000000000000000000000000000000000000805"

Direct call

cast call "$GOV_PRECOMPILE" \
  "getProposals(uint32,address,address,(bytes,uint64,uint64,bool,bool))(((uint64,string[],uint32,(string,string,string,string),uint64,uint64,(string,uint256)[],uint64,uint64,string,string,string,address)[]),(bytes,uint64))" \
  "0" \
  "0x0000000000000000000000000000000000000000" \
  "0x0000000000000000000000000000000000000000" \
  "(0x,0,20,false,false)" \
  --rpc-url "$RPC_URL"

Call from contract

address constant GOV = 0x0000000000000000000000000000000000000805;

struct PageRequest {
    bytes key;
    uint64 offset;
    uint64 limit;
    bool countTotal;
    bool reverse;
}

function queryGovProposals() external view returns (bytes memory) {
    PageRequest memory page = PageRequest("", 0, 20, false, false);
    (bool ok, bytes memory out) = GOV.staticcall(
        abi.encodeWithSignature(
            "getProposals(uint32,address,address,(bytes,uint64,uint64,bool,bool))",
            uint32(0),
            address(0),
            address(0),
            page
        )
    );
    require(ok, "precompile call failed");
    return out;
}

Transaction Examples

Environment Variables

cast wallet import ault-ops --interactive

export CAST_ACCOUNT="ault-ops"
export FROM="$(cast wallet address --account "$CAST_ACCOUNT")"
export PROPOSAL_ID="<proposal_id_uint64>"
export VOTE_OPTION="1"
export VOTE_METADATA=""

Direct call

cast send "$GOV_PRECOMPILE" \
  "vote(address,uint64,uint8,string)" \
  "$FROM" \
  "$PROPOSAL_ID" \
  "$VOTE_OPTION" \
  "$VOTE_METADATA" \
  --rpc-url "$RPC_URL" \
  --account "$CAST_ACCOUNT"

Call from contract

address constant GOV = 0x0000000000000000000000000000000000000805;

function txGovVote(
    uint64 proposalId,
    uint8 option,
    string calldata metadata
) external returns (bool) {
    (bool ok, bytes memory out) = GOV.call(
        abi.encodeWithSignature(
            "vote(address,uint64,uint8,string)",
            msg.sender,
            proposalId,
            option,
            metadata
        )
    );
    require(ok, "precompile call failed");
    return abi.decode(out, (bool));
}

Notes

  • VOTE_OPTION values are 1:Yes, 2:Abstain, 3:No, and 4:NoWithVeto.
  • Proposal payload and coin tuples are ABI-encoded structures.

ABI

Download Governance ABI JSON