Ontology Rosetta Node | Construction API

Overview

The construction API facilitates actions such as generating and sending transactions to the chain. The available methods have been listed below.

Construction

Derive address from a public key

Method: POST

URL: /construction/derive

Sample Request:


{

    "network_identifier" :  {

            "blockchain" : "ont",

            "network" : "mainnet"

        },

    "public_key" : {

        "hex_bytes" : "<pubkey hex string>",

        "curve_type" : "secp256k1",

        "metadata" : {

            "type" : "hex"

        }

    }

}

In the type field, the two address formats supported are hex and base58. The two supported curve types are secp256k1 and edwards25519.

Sample Response:


{

    "address" : "<address>",

    "metadata" : {

         "type" : "hex"

    }

}

Create a metadata request

Method: POST

URL: /construction/preprocess

Sample Request:


{

    "network_identifier": {

        "blockchain": "ont",

        "network": "privatenet"

    },

    "operations": [

        {

            "operation_identifier": {

                "index": 0

            },

            "type": "transfer",

            "status": "",

            "account": {

                "address": "AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud"

            },

            "amount": {

                "value": "-1",

                "currency": {

                    "symbol": "ONT",

                    "decimals": 0,

                    "metadata": {

                        "ContractAddress": "0100000000000000000000000000000000000000",

                        "TokenType": "Governance Token"

                    }

                }

            }

        },

        {

            "operation_identifier": {

                "index": 1

            },

            "related_operations": [

                {

                    "index": 0

                }

            ],

            "type": "transfer",

            "status": "",

            "account": {

                "address": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

            },

            "amount": {

                "value": "1",

                "currency": {

                    "symbol": "ONT",

                    "decimals": 0,

                    "metadata": {

                        "ContractAddress": "0100000000000000000000000000000000000000",

                        "TokenType": "Governance Token"

                    }

                }

            },

            "metadata": {

                "gasLimit": 20000,

                "gasPrice": 2500

            }

        }

    ],

    "metadata": {

        "payer": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

    }

}

Sample Response:


{

    "options": {

        "amount": "1",

        "decimals": 0,

        "fromAddr": "AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud",

        "gasLimit": 20000,

        "gasPrice": 2500,

        "payer": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS",

        "symbol": "ONT",

        "toAddr": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

    }

}

Fetch transaction creation metadata

Method: POST

URL: /construction/metadata

Sample Request:


{

  "network_identifier": {

    "blockchain": "ont",

    "network": "mainnet"

  },

  "options": {

    "method": "transfer"

  }

}

Sample Response:


{

    "metadata": {

        "amount": "",

        "asset": "",

        "fromAddr": "",

        "gasLimit": "",

        "gasPrice": "",

        "payer": "",

        "toAddr": ""

    }

}

| amount: Transaction amount

| asset: Asset type

| fromAddr: from address

| gasLimit: Gas limit, default value: 2000

| gasPrice: Gas price, default value: 2500

| payer: Default from address

| toAddr : to address

Generate an unsigned transaction and signing payloads

Method: POST

URL: /construction/payloads

Sample Request:


{

    "network_identifier": {

        "blockchain": "ont",

        "network": "privatenet"

    },

    "operations": [

        {

            "operation_identifier": {

                "index": 0

            },

            "type": "transfer",

            "status": "",

            "account": {

                "address": "AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud"

            },

            "amount": {

                "value": "-1",

                "currency": {

                    "symbol": "ONT",

                    "decimals": 0,

                    "metadata": {

                        "ContractAddress": "0100000000000000000000000000000000000000",

                        "TokenType": "Governance Token"

                    }

                }

            }

        },

        {

            "operation_identifier": {

                "index": 1

            },

            "related_operations": [

                {

                    "index": 0

                }

            ],

            "type": "transfer",

            "status": "",

            "account": {

                "address": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

            },

            "amount": {

                "value": "1",

                "currency": {

                    "symbol": "ONT",

                    "decimals": 0,

                    "metadata": {

                        "ContractAddress": "0100000000000000000000000000000000000000",

                        "TokenType": "Governance Token"

                    }

                }

            },

            "metadata": {

                "gasLimit": 20000,

                "gasPrice": 2500

            }

        }

    ],

    "metadata": {

        "payer": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

    }

}

Sample Response:


{

    "unsigned_transaction": "00d1b8c16889204e000000000000c409000000000000ffe723aefd01bac311d8b16ff8bfd594d77f31ee7100c66b14092118e0112274581b60dfb6fedcbfdcfc044be76a7cc814ffe723aefd01bac311d8b16ff8bfd594d77f31ee6a7cc8516a7cc86c51c1087472616e736665721400000000000000000000000000000000000000010068164f6e746f6c6f67792e4e61746976652e496e766f6b650000",

    "payloads": [

        {

            "hex_bytes": "a4a88f45b51e7aa01eedd0db3a7d7aff0a6e641256f3e073e8dbabb19358513f",

            "address": "AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud",

            "signature_type": "ecdsa"

        }

    ]

}

Parse a transaction

Method: POST

URL: /construction/parse

Sample Request:


{

    "network_identifier": {

        "blockchain": "ont",

        "network": "privatenet"

    },

    "signed" : false,

    "transaction":"00d10534aa05c409000000000000204e000000000000ffe723aefd01bac311d8b16ff8bfd594d77f31ee7100c66b14092118e0112274581b60dfb6fedcbfdcfc044be76a7cc814ffe723aefd01bac311d8b16ff8bfd594d77f31ee6a7cc8516a7cc86c51c1087472616e736665721400000000000000000000000000000000000000010068164f6e746f6c6f67792e4e61746976652e496e766f6b650000"

}

Sample Response:


{

    "operations": [

        {

            "operation_identifier": {

                "index": 0

            },

            "type": "transfer",

            "status": "SUCCESS",

            "account": {

                "address": "AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud"

            },

            "amount": {

                "value": "-1",

                "currency": {

                    "symbol": "ONT",

                    "decimals": 0,

                    "metadata": {

                        "ContractAddress": "0100000000000000000000000000000000000000",

                        "TokenType": "Governance Token"

                    }

                }

            }

        },

        {

            "operation_identifier": {

                "index": 1

            },

            "related_operations": [

                {

                    "index": 0

                }

            ],

            "type": "transfer",

            "status": "SUCCESS",

            "account": {

                "address": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

            },

            "amount": {

                "value": "1",

                "currency": {

                    "symbol": "ONT",

                    "decimals": 0,

                    "metadata": {

                        "ContractAddress": "0100000000000000000000000000000000000000",

                        "TokenType": "Governance Token"

                    }

                }

            },

            "metadata": {

                "gasLimit": 20000,

                "gasPrice": 2500

            }

        }

    ],

    "signers": [],

    "metadata": {

        "payer": "Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS"

    }

}

Create a transaction using signatures

Method: POST

URL: /construction/combine

Sample Request:

In this sample request, the account AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud transfers 1 ONT to the account Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS, and the account Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS pays the transaction fee as the payer.


{

        "network_identifier":  {

            "blockchain": "ont",

            "network": "testnet"

        },

        "unsigned_transaction":"00d1594606d2c409000000000000204e000000000000ffe723aefd01bac311d8b16ff8bfd594d77f31ee7100c66b14092118e0112274581b60dfb6fedcbfdcfc044be76a7cc814ffe723aefd01bac311d8b16ff8bfd594d77f31ee6a7cc8516a7cc86c51c1087472616e736665721400000000000000000000000000000000000000010068164f6e746f6c6f67792e4e61746976652e496e766f6b650000",

        "signatures":[

                {

                "signing_payload":{

                    "address":"Af6xrG7WB9wUKQ3aRDXnfba2G5DXjqejMS",

                    "hex_bytes":"2b371f76afde8a543fd0a6a58f2578281b3517e96c2a811114ea4c78e362b221",

                    "signature_type":"ecdsa"

                },

                "public_key":{

                    "hex_bytes":"02263e2e1eecf7a45f21e9e0f865510966d4e93551d95876ecb3c42acf2b68aaae",

                    "curve_type":"secp256k1"

                },

                "signature_type":"ecdsa",

                "hex_bytes":"3b52bc592bbba306ca9368e2808d6eb1d14fe0c3e2c801294bf8ebe3a994b464e6888038b6411a78428f9020b9f43c9dbcada7f77c0307b3ce9a410d8d2b6fa6"

            },

            {

                "signing_payload":{

                    "address":"AGc9NrdF5MuMJpkFfZ3MWKa67ds6H2fzud",

                    "hex_bytes":"2b371f76afde8a543fd0a6a58f2578281b3517e96c2a811114ea4c78e362b221",

                    "signature_type":"ecdsa"

                },

                "public_key":{

                    "hex_bytes":"03944e3ff777b14add03a76fd6767aaf4a65c227ec201375d9118d4e6b272494c7",

                    "curve_type":"secp256k1"

                },

                "signature_type":"ecdsa",

                "hex_bytes":"a6f29359a94db9725ceafa37012abd3a02cff41fe1b3ca6fb0f4c58e86cd2e214567a5f29682cd4432404ecb8ded644bfb9324fe0eb746fe53097ffed13d11b1"

            }

        ]

}

Sample Response:


{

    "signed_transaction": "00d1594606d2c409000000000000204e000000000000ffe723aefd01bac311d8b16ff8bfd594d77f31ee7100c66b14092118e0112274581b60dfb6fedcbfdcfc044be76a7cc814ffe723aefd01bac311d8b16ff8bfd594d77f31ee6a7cc8516a7cc86c51c1087472616e736665721400000000000000000000000000000000000000010068164f6e746f6c6f67792e4e61746976652e496e766f6b65000241403b52bc592bbba306ca9368e2808d6eb1d14fe0c3e2c801294bf8ebe3a994b464e6888038b6411a78428f9020b9f43c9dbcada7f77c0307b3ce9a410d8d2b6fa6232102263e2e1eecf7a45f21e9e0f865510966d4e93551d95876ecb3c42acf2b68aaaeac4140a6f29359a94db9725ceafa37012abd3a02cff41fe1b3ca6fb0f4c58e86cd2e214567a5f29682cd4432404ecb8ded644bfb9324fe0eb746fe53097ffed13d11b1232103944e3ff777b14add03a76fd6767aaf4a65c227ec201375d9118d4e6b272494c7ac"

}

Fetch the hash of a signed transaction

Method: POST

URL: /construction/hash

Sample Request:


{

    "network_identifier": {

        "blockchain": "ont",

        "network": "privatenet"

    },

    "signed_transaction":"00d1458813d9c409000000000000204e000000000000ffe723aefd01bac311d8b16ff8bfd594d77f31ee7100c66b14092118e0112274581b60dfb6fedcbfdcfc044be76a7cc814ffe723aefd01bac311d8b16ff8bfd594d77f31ee6a7cc8516a7cc86c51c1087472616e736665721400000000000000000000000000000000000000010068164f6e746f6c6f67792e4e61746976652e496e766f6b6500024140cb1e23e46a7e8e01563c64d7b5d9bf8022f549d411487156d55403ec7213f6cec49d413631d841852e493dca27e746977ea2ddd9e69906b8db7e71c3e15f7407232102263e2e1eecf7a45f21e9e0f865510966d4e93551d95876ecb3c42acf2b68aaaeac41409d15ed0d27224caecb55207b002f4a57846423bbe26764307e29704abfe4b327710c449531ac0f9ef621d864eab93a2ef373d2bc33027873c9466a30e748145f232103944e3ff777b14add03a76fd6767aaf4a65c227ec201375d9118d4e6b272494c7ac"

}

Sample Response:


{

    "transaction_hash": "cc45747a18862709f4ce50290ac331c94fb5ef6b608c36c90b00314884312b03"

}

Submit a signed transaction

Method: POST

URL: /construction/submit

Sample Request:


{

  "network_identifier": {

    "blockchain": "ont",

    "network": "mainnet"

  },

  "signed_transaction": "<signed tx hex>"

}

Sample Response:


{

  "transaction_identifier": {

    "hash": "<tx hash>"

  },

  "metadata": {}

}

1 Like

Ontology’s Rosetta Node is also accessible from the Ontology Developer center: https://docs.ont.io/developer-tools/api/rosetta-node-api/construction-api

1 Like