Registering and Searching Contract Artifacts

Registering Smart Contract meta information and compilation results (ABI, Bytecode) using ChainZ API Service and searching the results.

Prerequisites

1. You must have ABI and Bytecode information for the Contract. For more information, refer to Extracting ABI and BYTECODE.

2. You must be authenticated to use the ChainZ API Service. For more details, refer to Getting Started > Creating Credentials and Getting Started > Issuing Access Tokens.

3. The issued access token must be within its validity period.

Registering and Searching Contract Artifacts

Registering Contract Artifact Information

1. API information

Use CreateArtifact from the Contract API (Link to Reference).

2. Input Information

  • Access Tokens & API Keys

  • Name - the name of the smart contract

  • Version - the version of the smart contract

  • abi - Smart Contract build artifacts

  • bytecode - Smart Contract build artifacts

3. Example of registering Contract Artifact information

# Example of Contract Artifact information registration - Request
curl -X 'POST' \
  'https://contract-api.chainz.biz/api/v1/contract/artifacts' \
  -H 'accept: application/json' \
  -H 'Authorization: Bearer {access token}' \
  -H 'x-api-key: {API key}' \
  -H 'Content-Type: application/json' \
  -d '{
    "name": "test-contract",
    "version": "1.0.0",
    "abi": [
	{
		"inputs": [],
		"stateMutability": "nonpayable",
		"type": "constructor"
	},
	{
		"anonymous": false,
		"inputs": [
			{
				"indexed": true,
				"internalType": "address",
				"name": "oldOwner",
				"type": "address"
			},
			{
				"indexed": true,
				"internalType": "address",
				"name": "newOwner",
				"type": "address"
			}
		],
		"name": "OwnerSet",
		"type": "event"
	},
	{
		"inputs": [
			{
				"internalType": "address",
				"name": "newOwner",
				"type": "address"
			}
		],
		"name": "changeOwner",
		"outputs": [],
		"stateMutability": "nonpayable",
		"type": "function"
	},
	{
		"inputs": [],
		"name": "getOwner",
		"outputs": [
			{
				"internalType": "address",
				"name": "",
				"type": "address"
			}
		],
		"stateMutability": "view",
		"type": "function"
	}
],
    "bytecode": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a361034d806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063893d20e81461003b578063a6f9dae114610059575b600080fd5b610043610075565b6040516100509190610259565b60405180910390f35b610073600480360381019061006e91906101fe565b61009e565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461012c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012390610274565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506101f881610300565b92915050565b60006020828403121561021057600080fd5b600061021e848285016101e9565b91505092915050565b610230816102a5565b82525050565b6000610243601383610294565b915061024e826102d7565b602082019050919050565b600060208201905061026e6000830184610227565b92915050565b6000602082019050818103600083015261028d81610236565b9050919050565b600082825260208201905092915050565b60006102b0826102b7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f43616c6c6572206973206e6f74206f776e657200000000000000000000000000600082015250565b610309816102a5565b811461031457600080fd5b5056fea2646970667358221220f5f41ca96243f6ecd862511c1aeeeb5f8b3a6171b642c1683755777d0bd062e864736f6c63430008040033",
    "deployedBytecode": "",
    "upgradable": false
}'
# Contract Artifact information registration usage example − Response
{
    "id": "8dd2e25a-60f1-4343-831e-cc2b8f794c36",
    "providerCode": "DGFK6277",
    "name": "test-contract-0930-2",
    "version": "1.0.0",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "oldOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnerSet",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "changeOwner",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getOwner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a361034d806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063893d20e81461003b578063a6f9dae114610059575b600080fd5b610043610075565b6040516100509190610259565b60405180910390f35b610073600480360381019061006e91906101fe565b61009e565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461012c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012390610274565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506101f881610300565b92915050565b60006020828403121561021057600080fd5b600061021e848285016101e9565b91505092915050565b610230816102a5565b82525050565b6000610243601383610294565b915061024e826102d7565b602082019050919050565b600060208201905061026e6000830184610227565b92915050565b6000602082019050818103600083015261028d81610236565b9050919050565b600082825260208201905092915050565b60006102b0826102b7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f43616c6c6572206973206e6f74206f776e657200000000000000000000000000600082015250565b610309816102a5565b811461031457600080fd5b5056fea2646970667358221220f5f41ca96243f6ecd862511c1aeeeb5f8b3a6171b642c1683755777d0bd062e864736f6c63430008040033",
    "deployedBytecode": "",
    "upgradable": false,
    "status": "CREATED",
    "createdAt": "2021-09-30T06:43:28.590Z",
    "updatedAt": "2021-09-30T06:43:28.590Z"
}
  • The 'id' of the output result is the unique identification information of the Smart Contract (Contract ID).

Searching Contract Artifact Information

1. API information

Use GetArtifactById of the Contract API (Link to Reference).

2. Input Information

  • Contract ID - it is an ID received as the response value when requesting contract artifact registration.

3. Example of searching Contract Artifact Information

# Example of searching Contract Artifact Information - Request
curl -X GET \
    "https://contract-api.chainz.biz/api/v1/contract/artifacts/ids/8dd2e25a-60f1-4343-831e-cc2b8f794c36" \
    -H  "accept: application/json" \
    -H  "Authorization: Bearer {access token}" \
    -H  "x-api-key: {API key}"
# Example of searching Contract Artifact Information - Response
{
    "id": "8dd2e25a-60f1-4343-831e-cc2b8f794c36",
    "providerCode": "DGFK6277",
    "name": "test-contract",
    "version": "1.0.0",
    "abi": [
        {
            "inputs": [],
            "stateMutability": "nonpayable",
            "type": "constructor"
        },
        {
            "anonymous": false,
            "inputs": [
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "oldOwner",
                    "type": "address"
                },
                {
                    "indexed": true,
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "OwnerSet",
            "type": "event"
        },
        {
            "inputs": [
                {
                    "internalType": "address",
                    "name": "newOwner",
                    "type": "address"
                }
            ],
            "name": "changeOwner",
            "outputs": [],
            "stateMutability": "nonpayable",
            "type": "function"
        },
        {
            "inputs": [],
            "name": "getOwner",
            "outputs": [
                {
                    "internalType": "address",
                    "name": "",
                    "type": "address"
                }
            ],
            "stateMutability": "view",
            "type": "function"
        }
    ],
    "bytecode": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a361034d806100db6000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063893d20e81461003b578063a6f9dae114610059575b600080fd5b610043610075565b6040516100509190610259565b60405180910390f35b610073600480360381019061006e91906101fe565b61009e565b005b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461012c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161012390610274565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f342827c97908e5e2f71151c08502a66d44b6f758e3ac2f1de95f02eb95f0a73560405160405180910390a3806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000813590506101f881610300565b92915050565b60006020828403121561021057600080fd5b600061021e848285016101e9565b91505092915050565b610230816102a5565b82525050565b6000610243601383610294565b915061024e826102d7565b602082019050919050565b600060208201905061026e6000830184610227565b92915050565b6000602082019050818103600083015261028d81610236565b9050919050565b600082825260208201905092915050565b60006102b0826102b7565b9050919050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b7f43616c6c6572206973206e6f74206f776e657200000000000000000000000000600082015250565b610309816102a5565b811461031457600080fd5b5056fea2646970667358221220f5f41ca96243f6ecd862511c1aeeeb5f8b3a6171b642c1683755777d0bd062e864736f6c63430008040033",
    "deployedBytecode": "",
    "upgradable": false,
    "status": "CREATED",
    "createdAt": "2021-09-30T06:43:28.000Z",
    "updatedAt": "2021-09-30T06:43:28.000Z"
}
  • You can check that Contract Artifact is registered normally.

Last updated