AElf.Contracts.CrossChain

Cross-Chain contract.

Implement AElf Standards ACS1 and ACS7.

Contract Methods

Method Name

Request Type

Response Type

Description

Initialize

CrossChain.InitializeInput

google.protobuf.Empty

Propose once cross chain indexing.

SetInitialSideChainLifetimeControllerAddress

aelf.Address

google.protobuf.Empty

Set the initial SideChainLifetimeController address which should be parliament organization by default.

SetInitialIndexingControllerAddress

aelf.Address

google.protobuf.Empty

Set the initial CrossChainIndexingController address which should be parliament organization by default.

ChangeCrossChainIndexingController

AuthorityInfo

google.protobuf.Empty

Change the cross chain indexing controller.

ChangeSideChainLifetimeController

AuthorityInfo

google.protobuf.Empty

Change the lifetime controller of the side chain.

ChangeSideChainIndexingFeeController

CrossChain.ChangeSideChainIndexingFeeControllerInput

google.protobuf.Empty

Change indexing fee adjustment controller for specific side chain.

AcceptCrossChainIndexingProposal

CrossChain.AcceptCrossChainIndexingProposalInput

google.protobuf.Empty

When the indexing proposal is released, clean up the pending proposal.

GetSideChainCreator

google.protobuf.Int32Value

aelf.Address

Get the side chain creator address according to side chain id.

GetChainStatus

google.protobuf.Int32Value

CrossChain.GetChainStatusOutput

Get the current status of side chain according to side chain id.

GetSideChainHeight

google.protobuf.Int32Value

google.protobuf.Int64Value

Get the side chain height according to side chain id.

GetParentChainHeight

google.protobuf.Empty

google.protobuf.Int64Value

Get the height of parent chain.

GetParentChainId

google.protobuf.Empty

google.protobuf.Int32Value

Get the chain id of parent chain.

GetSideChainBalance

google.protobuf.Int32Value

google.protobuf.Int64Value

Get the balance of side chain indexing according to side chain id.

GetSideChainIndexingFeeDebt

google.protobuf.Int32Value

google.protobuf.Int64Value

Get the fee debt of side chain indexing according to side chain id.

GetIndexingProposalStatus

google.protobuf.Empty

CrossChain.GetIndexingProposalStatusOutput

Get the status of the current indexing proposal.

GetSideChainIndexingFeePrice

google.protobuf.Int32Value

google.protobuf.Int64Value

Get the side chain indexing fee price according to side chain id.

GetSideChainLifetimeController

google.protobuf.Empty

AuthorityInfo

Get the lifetime controller of the side chain.

GetCrossChainIndexingController

google.protobuf.Empty

AuthorityInfo

Get the cross chain indexing controller.

GetSideChainIndexingFeeController

google.protobuf.Int32Value

AuthorityInfo

Get the indexing fee controller of side chain according to side chain id.

AElf.Standards.ACS1

Method Name

Request Type

Response Type

Description

SetMethodFee

acs1.MethodFees

google.protobuf.Empty

Set the method fees for the specified method. Note that this will override all fees of the method.

ChangeMethodFeeController

AuthorityInfo

google.protobuf.Empty

Change the method fee controller, the default is parliament and default organization.

GetMethodFee

google.protobuf.StringValue

acs1.MethodFees

Query method fee information by method name.

GetMethodFeeController

google.protobuf.Empty

AuthorityInfo

Query the method fee controller.

AElf.Standards.ACS7

Method Name

Request Type

Response Type

Description

ProposeCrossChainIndexing

acs7.CrossChainBlockData

google.protobuf.Empty

Propose once cross chain indexing.

ReleaseCrossChainIndexingProposal

acs7.ReleaseCrossChainIndexingProposalInput

google.protobuf.Empty

Release the proposed indexing if already approved.

RequestSideChainCreation

acs7.SideChainCreationRequest

google.protobuf.Empty

Request side chain creation.

ReleaseSideChainCreation

acs7.ReleaseSideChainCreationInput

google.protobuf.Empty

Release the side chain creation request if already approved and it will call the method CreateSideChain.

CreateSideChain

acs7.CreateSideChainInput

google.protobuf.Int32Value

Create the side chain and returns the newly created side chain ID. Only SideChainLifetimeController is permitted to invoke this method.

Recharge

acs7.RechargeInput

google.protobuf.Empty

Recharge for the specified side chain.

DisposeSideChain

google.protobuf.Int32Value

google.protobuf.Int32Value

Dispose a side chain according to side chain id. Only SideChainLifetimeController is permitted to invoke this method.

AdjustIndexingFeePrice

acs7.AdjustIndexingFeeInput

google.protobuf.Empty

Adjust side chain indexing fee. Only IndexingFeeController is permitted to invoke this method.

VerifyTransaction

acs7.VerifyTransactionInput

google.protobuf.BoolValue

Verify cross chain transaction.

GetSideChainIdAndHeight

google.protobuf.Empty

acs7.ChainIdAndHeightDict

Gets all the side chain id and height of the current chain.

GetSideChainIndexingInformationList

google.protobuf.Empty

acs7.SideChainIndexingInformationList

Get indexing information of side chains.

GetAllChainsIdAndHeight

google.protobuf.Empty

acs7.ChainIdAndHeightDict

Get id and recorded height of all chains.

GetIndexedSideChainBlockDataByHeight

google.protobuf.Int64Value

acs7.IndexedSideChainBlockData

Get block data of indexed side chain according to height.

GetBoundParentChainHeightAndMerklePathByHeight

google.protobuf.Int64Value

acs7.CrossChainMerkleProofContext

Get merkle path bound up with side chain according to height.

GetChainInitializationData

google.protobuf.Int32Value

acs7.ChainInitializationData

Get initialization data for specified side chain.

Contract Types

AElf.Contracts.CrossChain

CrossChain.AcceptCrossChainIndexingProposalInput

Field

Type

Description

Label

chain_id

int32

The chain id of accepted indexing.

CrossChain.ChainIndexingProposal

Field

Type

Description

Label

proposal_id

aelf.Hash

The id of cross chain indexing proposal.

proposer

aelf.Address

The proposer of cross chain indexing.

proposed_cross_chain_block_data

acs7.CrossChainBlockData

The cross chain data proposed.

status

CrossChainIndexingProposalStatus

The status of of cross chain indexing proposal.

chain_id

int32

The chain id of the indexing.

CrossChain.ChangeSideChainIndexingFeeControllerInput

Field

Type

Description

Label

chain_id

int32

The side chain id.

authority_info

AuthorityInfo

The changed controller of indexing fee.

CrossChain.CrossChainIndexingControllerChanged

Field

Type

Description

Label

authority_info

AuthorityInfo

The changed controller of indexing.

CrossChain.Disposed

Field

Type

Description

Label

chain_id

int32

The disposed side chain id.

CrossChain.GetChainStatusOutput

Field

Type

Description

Label

status

SideChainStatus

The status of side chain.

CrossChain.GetIndexingProposalStatusOutput

Field

Type

Description

Label

chain_indexing_proposal_status

GetIndexingProposalStatusOutput.ChainIndexingProposalStatusEntry

The collection of pending indexing proposal, the key is chain id.

repeated

CrossChain.GetIndexingProposalStatusOutput.ChainIndexingProposalStatusEntry

Field

Type

Description

Label

key

int32

value

PendingChainIndexingProposalStatus

CrossChain.GetPendingCrossChainIndexingProposalOutput

Field

Type

Description

Label

proposal_id

aelf.Hash

The proposal id of cross chain indexing.

proposer

aelf.Address

The proposer of cross chain indexing proposal.

to_be_released

bool

True if the proposal can be released, otherwise false.

proposed_cross_chain_block_data

acs7.CrossChainBlockData

The cross chain data proposed.

expired_time

google.protobuf.Timestamp

The proposal expiration time.

CrossChain.InitializeInput

Field

Type

Description

Label

parent_chain_id

int32

The id of parent chain.

creation_height_on_parent_chain

int64

The height of side chain created on parent chain.

is_privilege_preserved

bool

True if chain privilege needed, otherwise false.

CrossChain.ParentChainIndexed

Field

Type

Description

Label

chain_id

bytes

Indexed parent chain id.

indexed_height

int64

Indexed block height.

CrossChain.PendingChainIndexingProposalStatus

Field

Type

Description

Label

proposal_id

aelf.Hash

The id of cross chain indexing proposal.

proposer

aelf.Address

The proposer of cross chain indexing.

to_be_released

bool

True if the proposal can be released, otherwise false.

proposed_cross_chain_block_data

acs7.CrossChainBlockData

The cross chain data proposed.

expired_time

google.protobuf.Timestamp

The proposal expiration time.

CrossChain.ProposedCrossChainIndexing

Field

Type

Description

Label

chain_indexing_proposal_collections

ProposedCrossChainIndexing.ChainIndexingProposalCollectionsEntry

The collection of chain indexing proposal, the key is chain id.

repeated

CrossChain.ProposedCrossChainIndexing.ChainIndexingProposalCollectionsEntry

Field

Type

Description

Label

key

int32

value

ChainIndexingProposal

CrossChain.SideChainCreatedEvent

Field

Type

Description

Label

creator

aelf.Address

The proposer who propose to create the side chain.

chainId

int32

The created side chain id.

CrossChain.SideChainCreationRequestState

Field

Type

Description

Label

side_chain_creation_request

acs7.SideChainCreationRequest

The parameters of creating side chain.

expired_time

google.protobuf.Timestamp

The expiration date of the proposal.

proposer

aelf.Address

The proposer who proposed to create the side chain.

CrossChain.SideChainIndexed

Field

Type

Description

Label

chain_id

bytes

Indexed side chain id.

indexed_height

int64

Indexed block height.

CrossChain.SideChainIndexingFeeControllerChanged

Field

Type

Description

Label

chain_id

int32

The side chain id.

authority_info

AuthorityInfo

The changed controller of side chain indexing fee.

CrossChain.SideChainInfo

Field

Type

Description

Label

proposer

aelf.Address

The proposer who propose to create the side chain.

side_chain_status

SideChainStatus

The status of side chain.

side_chain_id

int32

The side chain id.

creation_timestamp

google.protobuf.Timestamp

The time of side chain created.

creation_height_on_parent_chain

int64

The height of side chain created on parent chain.

indexing_price

int64

The price of indexing fee.

is_privilege_preserved

bool

True if chain privilege needed, otherwise false.

arrears_info

SideChainInfo.ArrearsInfoEntry

creditor and amounts for the chain indexing fee debt

repeated

indexing_fee_controller

AuthorityInfo

The controller of indexing fee.

CrossChain.SideChainInfo.ArrearsInfoEntry

Field

Type

Description

Label

key

string

value

int64

CrossChain.SideChainLifetimeControllerChanged

Field

Type

Description

Label

authority_info

AuthorityInfo

The changed controller of side chain lifetime.

CrossChain.CrossChainIndexingProposalStatus

Name

Number

Description

NON_PROPOSED

0

PENDING

1

The proposal is pending.

ACCEPTED

2

The proposal has been released.

CrossChain.SideChainStatus

Name

Number

Description

FATAL

0

Currently no meaning.

ACTIVE

1

The side chain is being indexed.

INDEXING_FEE_DEBT

2

The side chain is in debt for indexing fee.

TERMINATED

3

The side chain is disposed.

AElf.Standards.ACS1

acs1.MethodFee

Field

Type

Description

Label

symbol

string

The token symbol of the method fee.

basic_fee

int64

The amount of fees to be charged.

acs1.MethodFees

Field

Type

Description

Label

method_name

string

The name of the method to be charged.

fees

MethodFee

List of fees to be charged.

repeated

is_size_fee_free

bool

Optional based on the implementation of SetMethodFee method.

AElf.Standards.ACS7

acs7.AdjustIndexingFeeInput

Field

Type

Description

Label

side_chain_id

int32

The side chain id to adjust.

indexing_fee

int64

The new price of indexing fee.

acs7.ChainIdAndHeightDict

Field

Type

Description

Label

id_height_dict

ChainIdAndHeightDict.IdHeightDictEntry

A collection of chain ids and heights, where the key is the chain id and the value is the height.

repeated

acs7.ChainIdAndHeightDict.IdHeightDictEntry

Field

Type

Description

Label

key

int32

value

int64

acs7.ChainInitializationConsensusInfo

Field

Type

Description

Label

initial_consensus_data

bytes

Initial consensus data.

acs7.ChainInitializationData

Field

Type

Description

Label

chain_id

int32

The id of side chain.

creator

aelf.Address

The side chain creator.

creation_timestamp

google.protobuf.Timestamp

The timestamp for side chain creation.

creation_height_on_parent_chain

int64

The height of side chain creation on parent chain.

chain_creator_privilege_preserved

bool

Creator privilege boolean flag: True if chain creator privilege preserved, otherwise false.

parent_chain_token_contract_address

aelf.Address

Parent chain token contract address.

chain_initialization_consensus_info

ChainInitializationConsensusInfo

Initial consensus information.

native_token_info_data

bytes

The native token info.

resource_token_info

ResourceTokenInfo

The resource token information.

chain_primary_token_info

ChainPrimaryTokenInfo

The chain primary token information.

acs7.ChainPrimaryTokenInfo

Field

Type

Description

Label

chain_primary_token_data

bytes

The side chain primary token data.

side_chain_token_initial_issue_list

SideChainTokenInitialIssue

The side chain primary token initial issue list.

repeated

acs7.CreateSideChainInput

Field

Type

Description

Label

side_chain_creation_request

SideChainCreationRequest

The request information of the side chain creation.

proposer

aelf.Address

The proposer of the side chain creation.

acs7.CrossChainBlockData

Field

Type

Description

Label

side_chain_block_data_list

SideChainBlockData

The side chain block data list to index.

repeated

parent_chain_block_data_list

ParentChainBlockData

The parent chain block data list to index.

repeated

acs7.CrossChainExtraData

Field

Type

Description

Label

transaction_status_merkle_tree_root

aelf.Hash

Merkle tree root of side chain block transaction status root.

acs7.CrossChainIndexingDataProposedEvent

Field

Type

Description

Label

proposed_cross_chain_data

CrossChainBlockData

Proposed cross chain data to be indexed.

proposal_id

aelf.Hash

The proposal id.

acs7.CrossChainMerkleProofContext

Field

Type

Description

Label

bound_parent_chain_height

int64

The height of parent chain bound up with side chain.

merkle_path_from_parent_chain

aelf.MerklePath

The merkle path generated from parent chain.

acs7.IndexedParentChainBlockData

Field

Type

Description

Label

local_chain_height

int64

The height of the local chain when indexing the parent chain.

parent_chain_block_data_list

ParentChainBlockData

Parent chain block data.

repeated

acs7.IndexedSideChainBlockData

Field

Type

Description

Label

side_chain_block_data_list

SideChainBlockData

Side chain block data.

repeated

acs7.ParentChainBlockData

Field

Type

Description

Label

height

int64

The height of parent chain.

cross_chain_extra_data

CrossChainExtraData

The merkle tree root computing from side chain roots.

chain_id

int32

The parent chain id.

transaction_status_merkle_tree_root

aelf.Hash

The merkle tree root computing from transactions status in parent chain block.

indexed_merkle_path

ParentChainBlockData.IndexedMerklePathEntry

Indexed block height from side chain and merkle path for this side chain block

repeated

extra_data

ParentChainBlockData.ExtraDataEntry

Extra data map.

repeated

acs7.ParentChainBlockData.ExtraDataEntry

Field

Type

Description

Label

key

string

value

bytes

acs7.ParentChainBlockData.IndexedMerklePathEntry

Field

Type

Description

Label

key

int64

value

aelf.MerklePath

acs7.RechargeInput

Field

Type

Description

Label

chain_id

int32

The chain id to recharge.

amount

int64

The amount to recharge.

acs7.ReleaseCrossChainIndexingProposalInput

Field

Type

Description

Label

chain_id_list

int32

List of chain ids to release.

repeated

acs7.ReleaseSideChainCreationInput

Field

Type

Description

Label

proposal_id

aelf.Hash

The proposal id of side chain creation.

acs7.ResourceTokenInfo

Field

Type

Description

Label

resource_token_list_data

bytes

The resource token information.

initial_resource_amount

ResourceTokenInfo.InitialResourceAmountEntry

The initial resource token amount.

repeated

acs7.ResourceTokenInfo.InitialResourceAmountEntry

Field

Type

Description

Label

key

string

value

int32

acs7.SideChainBlockData

Field

Type

Description

Label

height

int64

The height of side chain block.

block_header_hash

aelf.Hash

The hash of side chain block.

transaction_status_merkle_tree_root

aelf.Hash

The merkle tree root computing from transactions status in side chain block.

chain_id

int32

The id of side chain.

acs7.SideChainBlockDataIndexed

acs7.SideChainCreationRequest

Field

Type

Description

Label

indexing_price

int64

The cross chain indexing price.

locked_token_amount

int64

Initial locked balance for a new side chain.

is_privilege_preserved

bool

Creator privilege boolean flag: True if chain creator privilege preserved, otherwise false.

side_chain_token_creation_request

SideChainTokenCreationRequest

Side chain token information.

side_chain_token_initial_issue_list

SideChainTokenInitialIssue

A list of accounts and amounts that will be issued when the chain starts.

repeated

initial_resource_amount

SideChainCreationRequest.InitialResourceAmountEntry

The initial rent resources.

repeated

acs7.SideChainCreationRequest.InitialResourceAmountEntry

Field

Type

Description

Label

key

string

value

int32

acs7.SideChainIndexingInformation

Field

Type

Description

Label

chain_id

int32

The side chain id.

indexed_height

int64

The indexed height.

acs7.SideChainIndexingInformationList

Field

Type

Description

Label

indexing_information_list

SideChainIndexingInformation

A list contains indexing information of side chains.

repeated

acs7.SideChainTokenCreationRequest

Field

Type

Description

Label

side_chain_token_symbol

string

Token symbol of the side chain to be created

side_chain_token_name

string

Token name of the side chain to be created

side_chain_token_total_supply

int64

Token total supply of the side chain to be created

side_chain_token_decimals

int32

Token decimals of the side chain to be created

acs7.SideChainTokenInitialIssue

Field

Type

Description

Label

address

aelf.Address

The account that will be issued.

amount

int64

The amount that will be issued.

acs7.VerifyTransactionInput

Field

Type

Description

Label

transaction_id

aelf.Hash

The cross chain transaction id to verify.

path

aelf.MerklePath

The merkle path of the transaction.

parent_chain_height

int64

The height of parent chain that indexing this transaction.

verified_chain_id

int32

The chain if to verify.

AElf.Types

aelf.Address

Field

Type

Description

Label

value

bytes

aelf.BinaryMerkleTree

Field

Type

Description

Label

nodes

Hash

The leaf nodes.

repeated

root

Hash

The root node hash.

leaf_count

int32

The count of leaf node.

aelf.Hash

Field

Type

Description

Label

value

bytes

aelf.LogEvent

Field

Type

Description

Label

address

Address

The contract address.

name

string

The name of the log event.

indexed

bytes

The indexed data, used to calculate bloom.

repeated

non_indexed

bytes

The non indexed data.

aelf.MerklePath

Field

Type

Description

Label

merkle_path_nodes

MerklePathNode

The merkle path nodes.

repeated

aelf.MerklePathNode

Field

Type

Description

Label

hash

Hash

The node hash.

is_left_child_node

bool

Whether it is a left child node.

aelf.SInt32Value

Field

Type

Description

Label

value

sint32

aelf.SInt64Value

Field

Type

Description

Label

value

sint64

aelf.ScopedStatePath

Field

Type

Description

Label

address

Address

The scope address, which will be the contract address.

path

StatePath

The path of contract state.

aelf.SmartContractRegistration

Field

Type

Description

Label

category

sint32

The category of contract code(0: C#).

code

bytes

The byte array of the contract code.

code_hash

Hash

The hash of the contract code.

is_system_contract

bool

Whether it is a system contract.

version

int32

The version of the current contract.

aelf.StatePath

Field

Type

Description

Label

parts

string

The partial path of the state path.

repeated

aelf.Transaction

Field

Type

Description

Label

from

Address

The address of the sender of the transaction.

to

Address

The address of the contract when calling a contract.

ref_block_number

int64

The height of the referenced block hash.

ref_block_prefix

bytes

The first four bytes of the referenced block hash.

method_name

string

The name of a method in the smart contract at the To address.

params

bytes

The parameters to pass to the smart contract method.

signature

bytes

When signing a transaction it’s actually a subset of the fields: from/to and the target method as well as the parameter that were given. It also contains the reference block number and prefix.

aelf.TransactionExecutingStateSet

Field

Type

Description

Label

writes

TransactionExecutingStateSet.WritesEntry

The changed states.

repeated

reads

TransactionExecutingStateSet.ReadsEntry

The read states.

repeated

deletes

TransactionExecutingStateSet.DeletesEntry

The deleted states.

repeated

aelf.TransactionExecutingStateSet.DeletesEntry

Field

Type

Description

Label

key

string

value

bool

aelf.TransactionExecutingStateSet.ReadsEntry

Field

Type

Description

Label

key

string

value

bool

aelf.TransactionExecutingStateSet.WritesEntry

Field

Type

Description

Label

key

string

value

bytes

aelf.TransactionResult

Field

Type

Description

Label

transaction_id

Hash

The transaction id.

status

TransactionResultStatus

The transaction result status.

logs

LogEvent

The log events.

repeated

bloom

bytes

Bloom filter for transaction logs. A transaction log event can be defined in the contract and stored in the bloom filter after the transaction is executed. Through this filter, we can quickly search for and determine whether a log exists in the transaction result.

return_value

bytes

The return value of the transaction execution.

block_number

int64

The height of the block hat packages the transaction.

block_hash

Hash

The hash of the block hat packages the transaction.

error

string

Failed execution error message.

aelf.TransactionResultStatus

Name

Number

Description

NOT_EXISTED

0

The execution result of the transaction does not exist.

PENDING

1

The transaction is in the transaction pool waiting to be packaged.

FAILED

2

Transaction execution failed.

MINED

3

The transaction was successfully executed and successfully packaged into a block.

CONFLICT

4

When executed in parallel, there are conflicts with other transactions.

PENDING_VALIDATION

5

The transaction is waiting for validation.

NODE_VALIDATION_FAILED

6

Transaction validation failed.

AuthorityInfo

Field

Type

Description

Label

contract_address

aelf.Address

The contract address of the controller.

owner_address

aelf.Address

The address of the owner of the contract.