Introduction

The following actions break down the construction of a Tokenized protocol message. The action is constructed by building a single string from each of the elements in order. Each field within the action is given a specific type, including standard types and compound types.

See the Transactions article for details on how to construct a complete transaction.

Available Actions

Contract Offer

Allows the administration to tell the smart contract what they want the details (labels, data, T&C's, etc.) of the Contract to be on-chain in a public and immutable way. The Contract Offer action 'initializes' a generic smart contract that has been spun up by either the smart contract operator or the administration. This on-chain action allows for the positive response from the smart contract with either a Contract Formation Action or a Rejection Action.

Action Code C1
Field Type Description
ContractName varchar(tiny) The name/title of the contract. Example: Tesla - Shareholder Agreement
BodyOfAgreementType uint(1) 0 - No Body of agreement included 1 - SHA-256 Hash 2 - Tokenized Body of Agreement Format where the agreement is specified with a separate C6/C7 action Body of Agreement - Amendments can be restricted to a vote. Example: 1
BodyOfAgreement varbin(medium) SHA-256 hash of the body of the agreement (full contract in pdf format or the like) or the full agreement. If BodyOfAgreementType is 2 then this field is empty and the agreement is specified in a C6/C7 action. This is specific to the smart contract and relevant Assets. Legal and technical information. This field is only valid when the field BodyOfAgreementType equals 1.
(Deprecated)ContractType deprecated Deprecated for more specific type. Describes the purpose of the contract. Example: Shareholder Agreement
SupportingDocs Document[tiny] Supporting documents that are important to the contract.
(Deprecated)GoverningLaw deprecated Deprecated to remove fixed size. 5 Letter Code to identify which governing law the contract will adhere to. Disputes are to be settled by this law in the jurisdiction specified below. Private dispute resolution organizations can be used as well. A custom code just needs to be defined. Governing Legal System - Amendments can be restricted to a vote. Example: USA
(Deprecated)Jurisdiction deprecated Deprecated to remove fixed size. Legal proceedings/arbitration will take place using the specified Governing Law in this location. Jurisdiction - Amendments can be restricted to a vote. Example: US-CA
ContractExpiration Timestamp All actions related to the contract will cease to work after this timestamp. The smart contract will stop running. This will allow many token use cases to be able to calculate total smart contract running costs for the entire life of the contract. Eg. an issuer is creating tickets for an event on the 5th of June 2018. The smart contract will facilitate exchange and send transactions up until the 6th of June. Wallets can use this to forget tokens that are no longer valid - or at least store them in an 'Expired' folder. Contract Expiration - Amendments can be restricted to a vote.
ContractURI varchar(tiny) Points to an information page that also has a copy of the Contract. Anyone can go to the website to have a look at the price/token, information about the issuer (company), information about the asset, legal information, etc. There will also be a way for token owners to vote on this page and contact details with the issuer/tokenized companies. Could be a IPv6/IPv4, or txn-id for on-chain information or even a public address (DNS). Example: https://tokenized.com/Contract/3qeoSCg7JmfSnJesJFojj
Issuer Entity The issuer of this contract. This field is only valid when the field ContractType equals 0.
(Deprecated)IssuerLogoURL deprecated The URL of the issuer's logo. Example: https://example.com/images/logo.png
ContractOperatorIncluded bool If true, then the second input is a contract operator. If false, then all additional inputs are just funding and "includes" fields are skipped in serialization.
(Deprecated)ContractOperator deprecated Deprecated for operator entity contract address. An additional entity with operator access to the contract.
(Deprecated)AdminOracle deprecated The oracle that provided the signature used to verify the administration's identity and association with a parent contract if one is specified.
(Deprecated)AdminOracleSignature deprecated The ECDSA signature provided by the oracle specified. The first input must correspond to the administration entity and, if a contract operator is included, the second input must correspond to the contract operator entity.
(Deprecated)AdminOracleSigBlockHeight deprecated The block height of the block hash used in the oracle signature.
ContractFee uint(8) Satoshis required to be paid to the contract for each asset action.
VotingSystems VotingSystem[tiny] A list of voting systems.
ContractPermissions varbin(small) A set of permission objects containing switches and field references that define the permissions for modifying this contract. See the Permission documentation for more detail.
RestrictedQtyAssets uint(8) Number of Assets (non-fungible) permitted on this contract. 0 if unlimited which will display an infinity symbol in UI Qty of Assets - Amendments can be restricted to a vote. Example: 1
AdministrationProposal bool Set to true if the administration is permitted to make proposals outside of the smart contract scope. General Governance Example: true
HolderProposal bool Set to true if a holder is permitted to make proposals outside of the smart contract scope. Example: true
Oracles Oracle[tiny] A list of oracles that provide approval for all token transfers for all assets under the contract.
MasterAddress Address The address of the contract's master key. This key has the ability to change the active contract address in case of a security failure with the active contract key.
EntityContract Address The address of the contract's parent entity. This is optional for entity contracts, but required for asset and service contracts to identify the entity parent contract. This field is required when the field ContractType equals 1. This field is only valid when the field ContractType equals 1.
OperatorEntityContract Address The address for the operator's entity contract. This field is only valid when the field ContractOperatorIncluded equals true.
ContractType uint(1) Describes the purpose of the contract. 0 - Entity, 1 - Asset Example: 0
Services Service[tiny] The services provided by the contract entity. This field is only valid when the field ContractType equals 0.
AdminIdentityCertificates AdminIdentityCertificate[tiny] Certificates providing proof of administrator/operator identities.
GoverningLaw LegalSystem 5 Letter Code to identify which governing law the contract will adhere to. Disputes are to be settled by this law in the jurisdiction specified below. Private dispute resolution organizations can be used as well. A custom code just needs to be defined. Governing Legal System - Amendments can be restricted to a vote. Example: USA
Jurisdiction Polity Legal proceedings/arbitration will take place using the specified Governing Law in this location. Jurisdiction - Amendments can be restricted to a vote. Example: US-CA
Transaction Summary
Index Input Description
0 Administration's Public Address The smart contract sets the administration's public address with whatever public address is in Index 0 of the first valid Contract Offer. From then on, the SC will only respond to 'commands' (request actions) from this address with respect to actions that are controlled by the administration according to the protocol.
1 Contract Operator's Public Address (Optional) Can also be used as a cold storage backup for the issuer. This is important if the issuer wants to be able to change their address as changes to the issuer or operator pkh in an amendment require signatures from both the issuer and the operator pkhs. The one exception to this rule, the Contract Operator can nominate a secondary controlling public address that can act on behalf of the issuer for issuer related requests. Typically this will be the Smart Contract Operator.
Index Output Description
0 Contract Public Address A contract address that has no other contract associated to it already.

Contract Formation

This txn is created by the contract (smart contract/off-chain agent/token contract) upon receipt of a valid Contract Offer Action from the administration. The smart contract will execute on a server controlled by the administration, or a smart contract operator on their behalf.

Action Code C2
Field Type Description
ContractName varchar(tiny) The name/title of the contract. Example: Tesla - Shareholder Agreement
BodyOfAgreementType uint(1) 0 - No Body of agreement included 1 - SHA-256 Hash 2 - Tokenized Body of Agreement Format where the agreement is specified with a separate C6/C7 action Body of Agreement - Amendments can be restricted to a vote. Example: 1
BodyOfAgreement varbin(medium) SHA-256 hash of the body of the agreement (full contract in pdf format or the like) or the full agreement. If BodyOfAgreementType is 2 then this field is empty and the agreement is specified in a C6/C7 action. This is specific to the smart contract and relevant Assets. Legal and technical information. This field is only valid when the field BodyOfAgreementType equals 1.
(Deprecated)ContractType deprecated Deprecated for more specific type. Describes the purpose of the contract. Example: Shareholder Agreement
SupportingDocs Document[tiny] Supporting documents that are important to the contract.
(Deprecated)GoverningLaw deprecated Deprecated to remove fixed size. 5 Letter Code to identify which governing law the contract will adhere to. Disputes are to be settled by this law in the jurisdiction specified below. Private dispute resolution organizations can be used as well. A custom code just needs to be defined. Governing Legal System - Amendments can be restricted to a vote. Example: USA
(Deprecated)Jurisdiction deprecated Deprecated to remove fixed size. Legal proceedings/arbitration will take place using the specified Governing Law in this location. Jurisdiction - Amendments can be restricted to a vote. Example: US-CA
ContractExpiration Timestamp All actions related to the contract will cease to work after this timestamp. The smart contract will stop running. This will allow many token use cases to be able to calculate smart contract running costs. Eg. an issuer is creating tickets for an event on the 5th of June 2018. The smart contract will facilitate exchange and send transactions up until the 6th of June. Wallets can use this to forget tokens that are no longer valid - or at least store them in an 'Expired' folder. Contract Expiration - Amendments can be restricted to a vote.
ContractURI varchar(tiny) Length 0-255 bytes. 0 is valid. Points to an information page that also has a copy of the Contract. Anyone can go to the website to have a look at the price/token, information about the Issuer (company), information about the Asset, legal information, etc. There will also be a way for Token Owners to vote on this page and contact details with the Issuer/tokenized companies. Could be a IPv6/IPv4, an IPFS address (hash) or txn-id for on chain information or even a public address (DNS). Example: https://tokenized.com/Contract/3qeoSCg7JmfSnJesJFojj
Issuer Entity The issuer of this contract. This field is only valid when the field ContractType equals 0.
(Deprecated)IssuerLogoURL deprecated Deprecated for data in the issuer entity. The URL of the issuer's logo. Example: https://example.tld/images/logo.png
(Deprecated)ContractOperator deprecated Deprecated for operator entity contract address. An additional entity with operator access to the contract.
(Deprecated)AdminOracle deprecated The oracle that provided the signature used to verify the administration's identity.
(Deprecated)AdminOracleSignature deprecated The ECDSA signature provided by the oracle specified. The first input must correspond to the administration entity and, if a contract operator is included, the second input must correspond to the contract operator entity.
(Deprecated)AdminOracleSigBlockHeight deprecated The block height of the block hash used in the oracle signature.
ContractFee uint(8) Satoshis required to be paid to the contract for each asset action.
VotingSystems VotingSystem[tiny] A list voting systems.
ContractPermissions varbin(small) A set of permission objects containing switches and field references that define the permissions for modifying this contract. See the Permission documentation for more detail.
RestrictedQtyAssets uint(8) Number of Assets (non-fungible) permitted on this contract. 0 if unlimited which will display an infinity symbol in UI Qty of Assets - Amendments can be restricted to a vote. Example: 1
AdministrationProposal bool Set to true if the administration is permitted to make proposals outside of the smart contract scope. General Governance Example: true
HolderProposal bool Set to true if a holder is permitted to make proposals outside of the smart contract scope. Example: true
Oracles Oracle[tiny] A list of oracles that provide approval for all token transfers for all assets under the contract.
MasterAddress Address The address of the contract's master key. This key has the ability to change the active contract address in case of a security failure with the active contract key.
ContractRevision uint(4) A counter for the number of times this contract has been revised using an amendment action. Can't be changed by the administration, operator. Smart contract controls. Example: 0
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Can't be changed by the administration, operator. Smart contract controls.
EntityContract Address The address of the contract's parent entity. This is optional for entity contracts, but required for asset and service contracts to identify the entity parent contract. This field is required when the field ContractType equals 1. This field is only valid when the field ContractType equals 1.
OperatorEntityContract Address The address for the operator's entity contract.
ContractType uint(1) Describes the purpose of the contract. 0 - Entity, 1 - Asset Example: 0
Services Service[tiny] The services provided by the contract entity. This field is only valid when the field ContractType equals 0.
AdminIdentityCertificates AdminIdentityCertificate[tiny] Certificates providing proof of administrator/operator identities.
AdminAddress Address The address of the contract's administrator. This is not contained in the contract offer payload, but determined by the inputs of the contract offer transaction and included here by the smart contract agent as a convenience.
OperatorAddress Address The address of the contract's operator. This is not contained in the contract offer payload, but determined by the inputs of the contract offer transaction and included here by the smart contract agent as a convenience."
GoverningLaw LegalSystem 5 Letter Code to identify which governing law the contract will adhere to. Disputes are to be settled by this law in the jurisdiction specified below. Private dispute resolution organizations can be used as well. A custom code just needs to be defined. Governing Legal System - Amendments can be restricted to a vote. Example: USA
Jurisdiction Polity Legal proceedings/arbitration will take place using the specified Governing Law in this location. Jurisdiction - Amendments can be restricted to a vote. Example: US-CA
Transaction Summary
Index Input Description
0 Contract Public Address The related contract address.
Index Output Description
0 Contract Public Address Required so that users can monitor transactions to the contract for updates to contract/assets.

Contract Amendment

The administration can initiate an amendment to the contract establishment metadata. The ability to make an amendment to the contract is restricted by the Authorization Flag set on the current revision of Contract Formation action.

Action Code C3
Field Type Description
ChangeAdministrationAddress bool Used to change the administration address. The new administration address must be in the input[1] position. A change of the administration or operator address requires both the operator and the administration address to be in the inputs (both signatures) of the Contract Amendment action. Example: 1
ChangeOperatorAddress bool Used to change the smart contract operator address. The new operator address must be in the input[1] position, unless the administration is being changed too, then it is in input[2]. A change of the administration or operator address requires both the operator and the administration address to be in the inputs (both signatures) of the Contract Amendment action. Example: 1
ContractRevision uint(4) Counter 0 to (2^32)-1 Example: 42
Amendments Amendment[tiny] A collection of modifications to perform on this contract.
RefTxID TxId The Bitcoin transaction ID of the associated result action that permitted the modifications. See Governance for more details.
Transaction Summary
Index Input Description
0 Administration's Public Address This action can only come from the administration.
1 New Administration Public Address Only treated as the new administration address when the Change Administration Address flag is set to true.
Index Output Description
0 Contract Public Address The related contract address.

Static Contract Formation

Static Contract Formation Action

Action Code C4
Field Type Description
ContractName varchar(tiny) Can be any unique identifying string, including human readable names for branding/vanity purposes. Contract identifier (instance) is the bitcoin public address. If the public address is lost, then the administration will have to reissue the entire contract, Asset Definition and tokens with the new public address. Smart contracts can be branded and specialized to suit any terms and conditions. Example: Tesla - Shareholder Agreement
ContractCode ContractCode 32 randomly generated bytes. Each Contract Code should be unique. The Contract ID will be human facing and will be the Contract Code, with a checksum, encoded in base58 and prefixed by 'CON'. Contract ID = CON + base58(ContractCode + checksum). Eg. Contract ID = 'CON18RDoKK7Ed5zid2FkKVy7q3rULr4tgfjr4'
BodyOfAgreementType uint(1) 1 - SHA-256 Hash, 2 - Tokenized Body of Agreement Format Body of Agreement - Amendments can be restricted to a vote. Example: 1
BodyOfAgreement varbin(medium) SHA-256 hash of the body of the agreement (full contract in pdf format or the like) or the full terms and conditions of an agreement in the Tokenized Body of Agreement format. This is specific to the smart contract and relevant Assets. Legal and technical information.
ContractType varchar(tiny) Describes the purpose of the contract. Example: Non-Disclosure Agreement
SupportingDocs Document[tiny] Supporting documents that are important to the contract.
ContractRevision uint(4) Counter 0 to (2^32)-1 Example: 0
(Deprecated)GoverningLawDeprecated deprecated Deprecated to remove fixed size. 5 Letter Code to identify which governing law the contract will adhere to. Disputes are to be settled by this law in the jurisdiction specified below. Private dispute resolution organizations can be used as well. A custom code just needs to be defined. Example: USA
(Deprecated)JurisdictionDeprecated deprecated Deprecated to remove fixed size. Legal proceedings/arbitration will take place using the specified Governing Law in this location. Example: US-CA
EffectiveDate Timestamp Start date of the contract.
ContractExpiration Timestamp All actions related to the contract will cease to work after this timestamp. The smart contract will stop running. This will allow many token use cases to be able to calculate smart contract running costs. Eg. an issuer is creating tickets for an event on the 5th of June 2018. The smart contract will facilitate exchange and send transactions up until the 6th of June. Wallets can use this to forget tokens that are no longer valid - or at least store them in an 'Expired' folder.
ContractURI varchar(tiny) Length 0-255 bytes. Points to an information page that also has a copy of the Contract. Anyone can go to the website to have a look at the price/token, information about the issuer (company), information about the Asset, legal information, etc. There will also be a way for token owners to vote on this page and contact details with the issuer/tokenized companies. Could be a IPv6/IPv4, or txn-id for on chain information or even a public address (DNS). Example: https://tokenized.com/Contract/3qeoSCg7JmfSnJesJFojj
PrevRevTxID TxId The Tx-ID of the previous contract revision.
Entities Entity[tiny] A list of legal entities associated with this contract.
EntityOracle Oracle The oracle that provided the signature used to verify the entity's identity.
EntityOracleSignature varbin(tiny) The ECDSA signature provided by the oracle specified. For N entities, the first N inputs must correspond with those entities.
EntityOracleSigBlockHeight uint(4) The block height of the block hash used in the oracle signature.
GoverningLaw LegalSystem 5 Letter Code to identify which governing law the contract will adhere to. Disputes are to be settled by this law in the jurisdiction specified below. Private dispute resolution organizations can be used as well. A custom code just needs to be defined. Governing Legal System - Amendments can be restricted to a vote. Example: USA
Jurisdiction Polity Legal proceedings/arbitration will take place using the specified Governing Law in this location. Jurisdiction - Amendments can be restricted to a vote. Example: US-CA
Transaction Summary
Index Input Description
0 Issuer or Party X Public Address Any number of involved parties with this contract.

Contract Address Change

This txn is signed by the master contract key defined in the contract formation and changes the active contract address which the contract uses to receive and respond to requests. This is a worst case scenario fallback to only be used when the contract private key is believed to be exposed.

Action Code C5
Field Type Description
NewContractAddress Address The address to be used by all future requests/responses for the contract.
Timestamp Timestamp Timestamp in nanoseconds of when the action was created.
Transaction Summary
Index Input Description
0 Contract Master Public Address The contract master address.
Index Output Description
0 Contract Public Address Currently active, and soon to be deactivated, contract address.

Body Of Agreement Offer

Allows the administration to define the agreement for the contract.

Action Code C6
Field Type Description
Chapters Chapter[tiny] A list of chapters for the agreement.
Definitions DefinedTerm[tiny] Definition of values within the agreement.
Transaction Summary
Index Input Description
0 Administration's Public Address
Index Output Description
0 Contract Public Address

Body Of Agreement Formation

Provides the current version of the body of agreement for the contract.

Action Code C7
Field Type Description
Chapters Chapter[tiny] A list of chapters for the agreement.
Definitions DefinedTerm[tiny] Definition of terms within the agreement.
Revision uint(4) A counter for the number of times this agreement has been revised using a modification action. Can't be changed by the administration, operator. Smart contract controls. Example: 0
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Can't be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address
Index Output Description
0 Contract Public Address

Body Of Agreement Amendment

Allows the administration to modify the agreement for the contract.

Action Code C8
Field Type Description
Revision uint(4) The current revision figure to ensure the modification provided is based on the latest version. Cannot be Amended Example: 0
Amendments Amendment[tiny] A collection of modifications to perform on this asset.
RefTxID TxId The Bitcoin transaction ID of the associated result action that permitted the modifications. See Governance for more details.
Transaction Summary
Index Input Description
0 Administration's Public Address
Index Output Description
0 Contract Public Address

Asset Definition

This action is used by the administration to define the properties/characteristics of the asset (token) that it wants to create. An asset has a unique identifier called AssetID = AssetType + base58(AssetCode + checksum). An asset is always linked to a contract that is identified by the public address of the Contract wallet.

Action Code A1
Field Type Description
AssetPermissions varbin(small) A set of permission objects containing switches and field references that define the permissions for modifying this asset. See the Permission documentation for more detail.
(Deprecated)TransfersPermitted deprecated Deprecated to move into specific asset types. Set to true if transfers are permitted between two parties, otherwise set to false to prevent peer-to-peer transfers.
(Deprecated)TradeRestrictionsDeprecated deprecated Deprecated to remove fixed size. If specified, the asset can only be traded within the specified trade restriction zone. For example, AUS would restrict to Australian residents only.
EnforcementOrdersPermitted bool Set to true if the administration is permitted to make enforcement orders on user tokens and balances, otherwise set to false to disable this feature. Example: 1
VotingRights bool When false holders of this asset will not be able to vote for tokens of this asset even on voting systems in which vote multiplers are not permitted. Example: true
VoteMultiplier uint(1) Multiplies a vote by the specified integer. Where 1 token is equal to 1 vote with a 1 for vote multipler (normal), 1 token = 3 votes with a multiplier of 3, for example. If zero, then holders of this asset don't get any votes for their tokens. Example: 3
AdministrationProposal bool Set to true if the administration is permitted to make proposals outside of the smart contract scope. General Governance Example: true
HolderProposal bool Set to true if a holder is permitted to make proposals outside of the smart contract scope. Example: true
AssetModificationGovernance uint(1) Supported values: 1 - Contract-wide Asset Governance. 0 - Asset-wide Asset Governance. If a referendum or initiative is used to propose a modification to a subfield controlled by the asset permissions, then the vote will either be a contract-wide vote (all assets vote on the referendum/initiative) or an asset-wide vote (only this asset votes on the referendum/initiative) depending on the value in this subfield. The voting system specifies the voting rules. Example: 1
AuthorizedTokenQty uint(8) The number of tokens authorized to be issued for this asset. Set to greater than zero for fungible tokens. If the value is 1 then it becomes a non-fungible token, where the contract would have many assets. Set to 0 to represent a placeholder asset, where tokens are to be issued later, or to represent a decomissioned asset where all tokens have been revoked. Example: 1000000
AssetType AssetType A code representing the type of asset and the structure of the payload. This field is always required.
AssetPayload varbin(small) A custom payload that contains meta data about this asset. Payload structure and length is dependent on the asset type chosen. See asset documentation for more details. This field is always required.
TradeRestrictions Polity[small] If specified, the asset can only be traded within the specified trade restriction zone. For example, AUS would restrict to Australian residents only.
Transaction Summary
Index Input Description
0 Administration's Public Address This action can only come from the administration.
Index Output Description
0 Contract Public Address The contract that this asset should be assigned to. Must include enough for the responding action.

Asset Creation

This action creates an asset in response to the administration's instructions in the Definition Action.

Action Code A2
Field Type Description
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
AssetIndex uint(8) The index of the asset within the contract. First asset is zero, second is one. Used to derive the asset code. Example: 0
AssetPermissions varbin(small) A set of permission objects containing switches and field references that define the permissions for modifying this asset. See the Permission documentation for more detail.
(Deprecated)TransfersPermitted deprecated Deprecated to move into specific asset types. Set to true if transfers are permitted between two parties, otherwise set to false to prevent peer-to-peer transfers.
(Deprecated)TradeRestrictionsDeprecated deprecated Deprecated to remove fixed size. If specified, the asset can only be traded within the specified trade restriction zone. For example, AUS would restrict to Australian residents only.
EnforcementOrdersPermitted bool Set to true if the administration is permitted to make enforcement orders on user tokens and balances, otherwise set to false to disable this feature. Example: true
VotingRights bool When false holders of this asset will not be able to vote for tokens of this asset even on voting systems in which vote multiplers are not permitted. Example: true
VoteMultiplier uint(1) Multiplies a vote by the specified integer. Where 1 token is equal to 1 vote with a 1 for vote multipler (normal), 1 token = 3 votes with a multiplier of 3, for example. If zero, then holders of this asset don't get any votes for their tokens. Example: 3
AdministrationProposal bool Set to true if the administration is permitted to make proposals outside of the smart contract scope. General Governance Example: true
HolderProposal bool Set to true if a holder is permitted to make proposals outside of the smart contract scope. Example: true
AssetModificationGovernance uint(1) Supported values: 1 - Contract-wide Asset Governance. 0 - Asset-wide Asset Governance. If a referendum or initiative is used to propose a modification to a subfield controlled by the asset permissions, then the vote will either be a contract-wide vote (all assets vote on the referendum/initiative) or an asset-wide vote (only this asset votes on the referendum/initiative) depending on the value in this subfield. The voting system specifies the voting rules. Example: 1
AuthorizedTokenQty uint(8) The number of tokens authorized to be issued for this asset. Set to greater than zero for fungible tokens. If the value is 1 then it becomes a non-fungible token, where the contract would have many assets. Set to 0 to represent a placeholder asset, where tokens are to be issued later, or to represent a decomissioned asset where all tokens have been revoked. Example: 1000000
AssetType AssetType A code representing the type of asset and the structure of the payload.
AssetPayload varbin(small) A custom payload that contains meta data about this asset. Payload structure and length is dependent on the asset type chosen. See asset documentation for more details.
AssetRevision uint(4) A counter for the number of times this asset has been revised using a modification action. Can't be changed by the administration, operator. Smart contract controls. Example: 456789
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Can't be changed by the administration, operator. Smart contract controls.
TradeRestrictions Polity[small] If specified, the asset can only be traded within the specified trade restriction zone. For example, AUS would restrict to Australian residents only.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that this asset was assigned to.
Index Output Description
0 Contract Public Address Required so that users can monitor transactions to the contract for updates to contract/assets.

Asset Modification

Token Dilutions, Call Backs/Revocations, burning etc.

Action Code A3
Field Type Description
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
AssetRevision uint(4) The current revision figure to ensure the modification provided is based on the latest version. Cannot be Amended Example: 0
Amendments Amendment[tiny] A collection of modifications to perform on this asset.
RefTxID TxId The Bitcoin transaction ID of the associated result action that permitted the modifications. See Governance for more details.
Transaction Summary
Index Input Description
0 Administration's Public Address This action can only come from the administration.
Index Output Description
0 Contract Public Address The contract that this asset currently belongs to. Must include enough for the responding action.

Transfer

A Token Owner(s) Sends, Exchanges or Swaps a token(s) or Bitcoin for a token(s) or Bitcoin. Can be as simple as sending a single token to a receiver. Or can be as complex as many senders sending many different assets - controlled by many different smart contracts - to a number of receivers. This action also supports atomic swaps (tokens for tokens). Since many parties and contracts can be involved in a transfer and the corresponding settlement action, the partially signed T1 and T2 actions will need to be passed around on-chain with an M1 action, or off-chain.

Action Code T1
Field Type Description
Assets AssetTransfer[tiny] The Assets involved in the Transfer Action.
OfferExpiry Timestamp This prevents any party from holding on to the partially signed message as a form of an option. Eg. the exchange at this price is valid for 30 mins.
ExchangeFee uint(8) Fixed amount of bitcoin being paid to an exchange for facilitating a transfer. Example: 0.01
ExchangeFeeAddress Address Identifies the public address that the exchange fee should be paid to.
Transaction Summary
Index Input Description
0 Asset Senders Asset (token) Sending Public Address. Assets[i].AssetSenders[j].Index references these inputs.
Index Output Description
0 Contract Public Address for Asset X Enough for the costs of the responding action, including any bitcoins being transfered, and the Contract Fee.

Settlement

Settles the transfer request of bitcoins and tokens from transfer (T1) actions.

Action Code T2
Field Type Description
Assets AssetSettlement[tiny] The Assets settled by the transfer action.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address (Asset X) Contract (Asset X) in response to a transfer action with Asset X being sent to another address(es).
Index Output Description
0 Asset 1 Settlement Address X Address X that is being settled for Asset 1.

Proposal

Allows the Administration/Token Holders to propose a change (aka Initiative/Shareholder vote). A significant cost - specified in the Contract Formation - can be attached to this action when sent from Token Holders to reduce spam, as the resulting vote will be put to all token owners.

Action Code G1
Field Type Description
Type uint(1) Type of proposal. Supported values: 0 Referendum / Administration Initiates / Members Vote 1 Initiative / Members Initiate / Members Vote 2 AdministrativeMatter / Administration Initiates / Administrators Vote
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
VoteSystem uint(1) X for Vote System X. (1-255, 0 is not valid.) Example: 1
ProposedAmendments Amendment[tiny] Each element contains details of which fields to modify, or delete. Because the number of fields in a Contract and Asset is dynamic due to some fields being able to be repeated, the index value of the field needs to be calculated against the Contract or Asset the changes are to apply to. In the event of a Vote being created from this Initiative, the changes will be applied to the version of the Contract or Asset at that time.
VoteOptions varchar(tiny) Length 1-255 bytes. 0 is not valid. Each byte allows for a different vote option. Typical votes will likely be multiple choice or Y/N. Vote instances are identified by the Tx-ID. AB would be used for Y/N (binary) type votes. When Specific is true, only AB is a valid value. Example: ABCDEFGHIJKLMNO
VoteMax uint(1) Range: 1-X. How many selections can a voter make in a Ballot Cast. 1 is selected for Y/N (binary). When Specific is true, only 1 is a valid value. Example: 15
ProposalDescription varchar(medium) Length restricted by the Bitcoin protocol. 0 is valid. Description or details of the vote Example: Change the name of the Contract.
ProposalDocumentHash bin(32) SHA256 Hash of the proposal document to be distributed to voters. Example: 77201b0094f50df309f0343e4f44dae64d0de503c91038faf2c6b039f9f18aec
VoteCutOffTimestamp Timestamp Ballot casts after this timestamp will not be included. The vote has finished.
Transaction Summary
Index Input Description
0 Operator / Token Owner's Public Address The user making the proposal for this contract.
Index Output Description
0 Contract Public Address Includes contract fee and holder proposal fee if applicable.
1 Contract Public Address Fund the Result TX at Vote cut off

Vote

A vote is created by the Contract in response to a valid Proposal Action.

Action Code G2
Field Type Description
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Contract Public Address Required so that users can monitor transactions to the contract for notifications of this action.

Ballot Cast

Used by Token Owners to cast their ballot (vote) on proposals. 1 Vote per token unless a vote multiplier is specified in the relevant Asset Definition action.

Action Code G3
Field Type Description
VoteTxId TxId Tx ID of the Vote the Ballot Cast is being made for.
Vote varchar(tiny) Length 1-255 bytes. 0 is not valid. Max length is the VoteMax value from the Proposal action. Accept, Reject, Abstain, Spoiled, Multiple Choice, or Preference List. 15 options total. Order of preference. 1st position = 1st choice. 2nd position = 2nd choice, etc. A is always Accept and B is always reject in a Y/N votes. Example: A
Transaction Summary
Index Input Description
0 Token Owner's Public Address The user casting the ballot for this contract.
Index Output Description
0 Contract Public Address Funds ballot cast response.

Ballot Counted

The smart contract will respond to a Ballot Cast action with a Ballot Counted action if the Ballot Cast is valid. If the Ballot Cast is not valid, then the smart contract will respond with a Rejection Action.

Action Code G4
Field Type Description
VoteTxId TxId Tx ID of the Vote the Ballot Cast is being made for.
Vote varchar(tiny) Length 1-255 bytes. 0 is not valid. Max length is the VoteMax value from the Proposal action. Accept, Reject, Abstain, Spoiled, Multiple Choice, or Preference List. 15 options total. Order of preference. 1st position = 1st choice. 2nd position = 2nd choice, etc. A is always Accept and B is always reject in a Y/N votes. Example: A
Quantity uint(8) Number of votes counted for this ballot. Factors in vote multipliers if there are any allowed, otherwise it is just quantity of tokens held.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Contract Public Address Required so that users can monitor transactions to the contract for notifications of this action.

Result

Once a vote has been completed the results are published. After the result is posted, it is up to the administration to send a contract/asset amendement if appropriate.

Action Code G5
Field Type Description
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
ProposedAmendments Amendment[tiny] Each element contains details of which fields to modify, or delete. Because the number of fields in a Contract and Asset is dynamic due to some fields being able to be repeated, the index value of the field needs to be calculated against the Contract or Asset the changes are to apply to. In the event of a Vote being created from this Initiative, the changes will be applied to the version of the Contract or Asset at that time.
VoteTxId TxId Link to the Vote Action txn.
OptionTally uint(8)[tiny] List of number of valid votes counted for each vote option. Length is encoded like a regular list object, but must match the length of VoteOptions from the Proposal action.
Result varchar(tiny) Length 1-255 bytes. 0 is not valid. The Option with the most votes. In the event of a draw for 1st place, all winning options are listed.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Contract Public Address Required so that users can monitor transactions to the contract for notifications of this action.

Order

Used by the administration to signal to the smart contract that the tokens that a particular public address(es) owns are to be confiscated, frozen, thawed or reconciled.

Action Code E1
Field Type Description
ComplianceAction fixedchar(1) Freeze (F), Thaw (T), Confiscate (C), Reconcile (R) Example: F
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
TargetAddresses TargetAddress[medium] The holders and quantities that are effected by the order. For a contract or asset wide freeze only the contract address is specified. Zero quantities are invalid unless it is for the contract address in an asset wide or contract wide freeze. In a thaw order this field is not serialized, because the entire freeze from the FreezeTxId freeze action will be thawed.
FreezeTxId TxId The tx id of the freeze action that is being thawed. Only serialized for thaw orders.
FreezePeriod Timestamp Used for a 'time out'. Tokens are automatically unfrozen after the expiration timestamp without requiring a Thaw Action. Null value for Thaw, Confiscation and Reconciallitaion orders. Example: Tue Oct 09 2018 05:00:00 GMT+1000 (AEST)
DepositAddress Address The public address for confiscated tokens to be deposited in. Null for Freeze, Thaw, actions. Eventually the supporting evidence/explanation can be supported by a Subfield that has the public address (and a signed message) owned by a legal authority for ID verification/certification purposes.
AuthorityName varchar(tiny) Length 0-255 bytes. Enforcement Authority Name (eg. Issuer, Queensland Police Service, Tokenized, etc.) Example: Supreme and District Courts Brisbane
AuthorityPublicKey varbin(tiny) Length 0-255 bytes. Public Key associated with the Enforcement Authority
SignatureAlgorithm uint(1) Algorithm used for order signature. Only valid value is currently 1 = ECDSA+secp256k1 Example: 1
OrderSignature varbin(tiny) Length 0-255 bytes. Signature for a message that lists out the target addresses and deposit address. Signature of (Contract PKH, Compliance Action, Authority Name, Asset Code, Supporting Evidence Hash, FreezePeriod, TargetAddresses, and DepositAddress)
(Deprecated)SupportingEvidenceHash deprecated Deprecated for new supporting evidence type and data fields (bin 32). SHA-256: warrant, court order, etc.
(Deprecated)RefTxs deprecated Deprecated for a new data format for reference transactions (varbin medium). The request/response actions that were dropped. The entire txn for both actions is included as evidence that the actions were accepted into the mempool at one point and that the senders (token/Bitcoin) signed their intent to transfer. The management of this record keeping is off-chain and managed by the administration or operator to preserve the integrity of the state of the tokens. Only applicable for reconcilliation actions. No subfield when F, T, R is selected as the Compliance Action subfield. Can be null. Dropped actions that require a reconciliation action to fix the break in the chain are considered to be an extremely rare event.
BitcoinDispersions QuantityIndex[small] Index of address in TargetAddresses and amount of bitcoin (in satoshis) they are receiving in exchange for their tokens.
Message varchar(medium) A message to include with the enforcement order. Example: Compelled by a court order.
SupportingEvidenceFormat uint(1) The data format of the supporting evidence field. 0 = no evidence data provided, 1 = markdown containing warrant, court order, etc.
SupportingEvidence varbin(tiny) Supporting evidence related to the order being requested.
ReferenceTransactions ReferenceTransaction[medium] The request/response actions that were dropped. The entire txn for both actions is included as evidence that the actions were accepted into the mempool at one point and that the senders (token/Bitcoin) signed their intent to transfer. The management of this record keeping is off-chain and managed by the administration or operator to preserve the integrity of the state of the tokens. Only applicable for reconcilliation actions. No subfield when F, T, R is selected as the Compliance Action subfield. Can be null. Dropped actions that require a reconciliation action to fix the break in the chain are considered to be an extremely rare event.
Transaction Summary
Index Input Description
0 Administration's Public Address This action can only come from the administration.
Index Output Description
0 Contract Public Address Contract fee and funding for response transaction.

Freeze

The contract responding to an Order action to freeze assets. To be used to comply with contractual/legal/issuer requirements. The target public address(es) will be marked as frozen. However the Freeze action publishes this fact to the public blockchain for transparency. The contract will not respond to any actions requested by the frozen address.

Action Code E2
Field Type Description
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
Quantities QuantityIndex[small] Indices to addresses in outputs and the quantities being frozen. If the only address is the contract address and the asset code is zeros, then it is a contract wide freeze. If the only address is the contract address and the asset code is specified, then it is an asset wide freeze.
FreezePeriod Timestamp Used for a 'time out'. Tokens are automatically unfrozen after the expiration timestamp without requiring a Thaw Action.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Target Public Address X If Target Public Address is the Contract Address then the entire contract is frozen. All request actions during the Freeze period will be ignored and rejected when the contract is thawed and rebuilds.

Thaw

The contract responding to an Order action to thaw assets. To be used to comply with contractual obligations or legal requirements. The Alleged Offender's tokens will be unfrozen to allow them to resume normal exchange and governance activities.

Action Code E3
Field Type Description
FreezeTxId TxId The tx id of the freeze action that is being reversed.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Target Public Address X Can be the Contract Address for a 'Contract-wide' Thaw in response to a Contract-wide Freeze.

Confiscation

The contract responding to an Order action to confiscate assets. To be used to comply with contractual obligations, legal and/or issuer requirements.

Action Code E4
Field Type Description
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
Quantities QuantityIndex[small] The holders effected by the confiscation and their balance remaining.
DepositQty uint(8) Deposit address's token balance after confiscation. Example: 10000
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Target Public Address X Can be the Contract Address for a 'Contract-wide' Confiscation.
1 Deposit Public Address Dust limit rule minimum value output of 546

Reconciliation

The contract responding to an Order action to reconcile assets. To be used at the direction of the administration to fix record keeping errors with bitcoin and token balances.

Action Code E5
Field Type Description
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
Quantities QuantityIndex[small] The holders effected by the reconciliation and their balance remaining.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 Target Public Address X 546 minimum. If N bitcoin needs to be sent to the address, then this will be the output that receives the Bitcoin.

Establishment

Establishes an on-chain register.

Action Code R1
Field Type Description
Message varchar(medium) A custom message to include with this action. Example: North America Whitelist
Transaction Summary
Index Input Description
0 Register Public Address The address of the associated register.
Index Output Description
0 Register Public Address Required so that users can monitor transactions to the register for notifications of this action.

Addition

Adds an entry to the Register.

Action Code R2
Field Type Description
Message varchar(medium) A custom message to include with this action. Example: username
Transaction Summary
Index Input Description
0 Register Public Address The address of the associated register.
Index Output Description
0 Register Public Address Required so that users can monitor transactions to the register for notifications of this action.

Alteration

A register entry/record can be altered.

Action Code R3
Field Type Description
EntryTxID TxId Transaction ID of the register entry to be altered.
Message varchar(medium) A custom message to include with this action. Example: Changed Country of Residence
Transaction Summary
Index Input Description
0 Register Public Address The address of the associated register.
Index Output Description
0 Register Public Address Required so that users can monitor transactions to the register for notifications of this action.

Removal

Removes an entry/record from the Register.

Action Code R4
Field Type Description
EntryTxID TxId Transaction ID of the register entry to be altered.
Message varchar(medium) A custom message to include with this action. Example: Removed due to violation of company policy.
Transaction Summary
Index Input Description
0 Register Public Address The address of the associated register.
Index Output Description
0 Register Public Address Required so that users can monitor transactions to the register for notifications of this action.

Message

The message action is a general purpose communication action. 'Twitter/SMS' for Issuers/Investors/Users. The message txn can also be used for passing partially signed txns on-chain, establishing private communication channels and EDI (receipting, invoices, PO, and private offers/bids). The messages are broken down by type for easy filtering in the a user's wallet. The Message Types are listed in the Message Types table.

Action Code M1
Field Type Description
SenderIndexes uint(4)[tiny] Associates the message to a particular input by the index. If none are specified then the first input is assumed.
ReceiverIndexes uint(4)[tiny] Associates the message to a particular output by the index. If none are specified then the first output is assumed.
MessageCode uint(2)
MessagePayload varbin(medium) Public or private (RSA public key, Diffie-Hellman). Issuers/Contracts can send the signifying amount of satoshis to themselves for public announcements or private 'notes' if encrypted. See Message Types for a full list of potential use cases. Example: Hello world!
Transaction Summary
Index Input Description
0 Sender Public Address The user sending the message.
Index Output Description
0 Receiver Public Address" The recipient's address for the message, supplied by the sender.

Rejection

Used to reject request actions that do not comply with the Contract. If money is to be returned to a User then it is used in lieu of the Settlement Action to properly account for token balances. All Administration/User request Actions must be responded to by the Contract with an Action. The only exception to this rule is when there is not enough fees in the first Action for the Contract response action to remain revenue neutral. If not enough fees are attached to pay for the Contract response then the Contract will not respond.

Action Code M2
Field Type Description
AddressIndexes uint(4)[tiny] Associates the message to a particular output by the index. If none are specified then the first output is assumed.
RejectAddressIndex uint(2) The address which is believed to have caused the rejection.
RejectionCode RejectionCode Classifies the rejection by a type. Example: 1
Message varchar(small) Length 0-65,535 bytes. Message that explains the reasoning for a rejection, if needed. Most rejection types will be captured by the Rejection Type Subfield. Example: Sorry, you don't have enough tokens.
Timestamp Timestamp Timestamp in nanoseconds of when the smart contract created the action. Cannot be changed by the administration, operator. Smart contract controls.
Transaction Summary
Index Input Description
0 Contract Public Address The contract that is performing this action.
Index Output Description
0 User / Contract public addresses The affected user or contract's publid addresses. Refunds all money provided in the request action, less fees

Field Types

Administrator

Administrator is used to refer to a Administration role in an Entity.

Field Type Description
Type Role Chairman, Director, Managing Partner, etc.. Found in 'Roles' in Specification/Resources Example: 7
Name varchar(tiny) Length 0-255 bytes. 0 is valid. Example: Satoshi Nakamoto

Administrator Identity Certificate

A certificate provided by an identity oracle to verify the administrator address is associated with the issuer entity identification information. Also if a contract operator is provided then it verifies that the contract operator address is associated with the specified contract operator identity information. For a child contract that references a parent entity contract the certificate verifies that the administrator address is associated with that entity contract.

Field Type Description
EntityContract Address The entity contract address of the service on chain that defines the identity oracle.
Signature Signature The signature provided by the oracle specified. The first input must correspond to the administration entity and, if a contract operator is included, the second input must correspond to the contract operator entity."
BlockHeight uint(4) The block height of the block hash used in the oracle signature.
Expiration Timestamp Oracles have the option to specify an expiration after which a new certificate should be provided.

Amendment

An Amendment is used to describe the modification of a single field in a Contract or Asset, as defined in the ContractFormation and AssetCreation messages.

Field Type Description
FieldIndexPath varbin(tiny) List of indices that identify the field/sub-field to be amended. The index path of the field being modified. Encoded as a list of base 128 var ints. Each index is an index into the current object, top level being the ContractFormation or AssetCreation. Indexes are defined by protobuf messages. If the current level is a list, then the index is a zero based offset to the element in the list.
Operation uint(1) 0 = Modify. 1 = Add an element to the data to the array of elements. 2 = Delete the element listed in the Element field. The Add and Delete operations only apply to a particilar element of a complex array type. For example, it could be used to remove a particular VotingSystem from a Contract. Example: 0
Data varbin(medium) New data for the amended subfield. Data type depends on the the type of the field being amended. The value should be serialize as defined by the protocol. The bytes must be encoded in the format of the field being modified.

AssetReceiver

An AssetReceiver is a quantity, address, and oracle signature. The quantity could be used to describe a number of tokens, or a value. The address is where the asset will be sent.

Field Type Description
Address Address The address receiving the tokens
Quantity uint(8) Number of tokens to be received by address at Output X Example: 100
OracleSigAlgorithm uint(1) 0 = No Oracle-signed Message (OracleConfirmationSig skipped in serialization), 1 = ECDSA+secp256k1. If the contract for the asset being received has oracles, then a signature is required from one of them. Example: 1
OracleIndex uint(1) Specifies the index into the list of oracles in the contract offer that was used to authorize this transfer.
OracleConfirmationSig Signature Length 0-255 bytes. If restricted to a oracle (whitelist) or has transfer restrictions (age, location, investor status): ECDSA+secp256k1 (or the like) signed message provided by an approved/trusted oracle through an API signature of the defined message. If no transfer restrictions(trade restriction/age restriction fields in the Asset Type payload. or restricted to a whitelist by the Contract Auth Flags, it is a NULL field.
OracleSigBlockHeight uint(4) The block height of the block hash used in the oracle signature.
OracleSigExpiry Timestamp This specifies the time at which the Oracle signature expires.

Asset Settlement

AssetSettlement is the data required to settle an asset transfer.

Field Type Description
ContractIndex uint(2) Index of input containing the contract's address for this offset
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: COU Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
Settlements QuantityIndex[tiny] Each element contains the resulting token balance of Asset X for the output Address, which is referred to by the index.

Asset Transfer

AssetTransfer is the data required to transfer an asset.

Field Type Description
ContractIndex uint(2) Index of output containing the contract's address for this offset
AssetType fixedchar(3) Three letter character that specifies the asset type. Example: COU Example: SHC
AssetCode AssetCode A unique code that is used to identify the asset. It is generated by hashing the contract public key hash and the asset index. SHA256(contract PKH + asset index) Cannot be changed by the administration, operator or smart contract.
AssetSenders QuantityIndex[tiny] Each element has the value of tokens to be spent from the input address, which is referred to by the index.
AssetReceivers AssetReceiver[tiny] Each element has the value of tokens to be received, the address, and an oracle signature if required.

Chapter

A chapter is the top level structure of an agreement. It contains articles.

Field Type Description
Title varchar(tiny) The title of the chapter.
Preamble varchar(small) The introduction to the chapter.
Articles Clause[tiny] A list of articles for the chapter.

Clause

A clause is the standard piece of an agreement, contained in each of the sub-levels of the agreement. Articles, Sections, Subsections, Paragraphs, and Subparagraphs.

Field Type Description
Title varchar(tiny) The title of the clause.
Body varchar(small) The body of the clause.
Children Clause[tiny] A list of clauses under this clause.

Defined Term

A definition define a term specified throughout an agreement.

Field Type Description
Term varchar(tiny) The name of the term being defined. Linked to from within the agreement with curly braces {} around the name.
Definition varchar(small) The definition of the name.

Document

A file containing data.

Field Type Description
Name varchar(tiny) Full name, including file extension, of the file. Length 0-255 bytes. 0 is valid. Example: Agreement.pdf
Type varchar(tiny) MIME type of the file. Length 0-255 bytes. 0 is valid. Example: application/pdf
Contents varbin(medium) The contents of the file.

Entity

Entity represents the details of a legal Entity, such as a public or private company, government agency, or and individual.

Field Type Description
Name varchar(tiny) Length 1-255 bytes (0 is not valid). Issuing entity (company, organization, individual). Can be any unique identifying string, including human readable names for branding/vanity purposes. Example: Tesla Inc.
Type EntityType The type of entity. (i.e Public Company, Individual) (Specification/Resources). Example: P
LEI fixedchar(20) Null is valid. A Legal Entity Identifier (or LEI) is an international identifier made up of a 20-character identifier that identifies distinct legal entities that engage in financial transactions. It is defined by ISO 17442.[1] Natural persons are not required to have an LEI; they’re eligible to have one issued, however, but only if they act in an independent business capacity.[2] The LEI is a global standard, designed to be non-proprietary data that is freely accessible to all.[3] As of December 2018, over 1,300,000 legal entities from more than 200 countries have now been issued with LEIs. ISO 17442 - https://en.wikipedia.org/wiki/Legal_Entity_Identifier Example: 54930084UKLVMY22DS16
UnitNumber varchar(tiny) Issuer/Entity/Contracting Party X Address Details (eg. HQ) Example: 2
BuildingNumber varchar(tiny) Example: 13577
Street varchar(tiny) Example: Fairmont Ave
SuburbCity varchar(tiny) Example: Robinoh
TerritoryStateProvinceCode fixedchar(5) Example: BC
CountryCode fixedchar(3) Example: USA
PostalZIPCode fixedchar(12) Example: 50210
EmailAddress varchar(tiny) Length 0-255 bytes. Address for text-based communication: eg. email address, Bitcoin address Example: satoshi@tokenized.com
PhoneNumber varchar(tiny) Length 0-255 bytes. 0 is valid. Phone Number for Entity. Example: 0448484848
Administration Administrator[tiny] A list of people that are in Administrative Roles for the Entity. eg. Chair, Director, Managing Partner, etc.
Management Manager[tiny] A list of people in Management Roles for the Entity. e.g CEO, COO, CTO, CFO, Secretary, Executive, etc.
DomainName varchar(tiny) Domain name owned by this entity. Length 0-255 bytes. 0 is valid. Example: tokenized.com
(Deprecated)EntityContractAddress deprecated Deprecated for separate field in contract. Address of entity contract. When the contract type is asset contract, or a child type, this field refers to the entity specified in the contract at the address specified. When this field is present, no other fields should be included in the entity.
PaymailHandle varchar(tiny) Length 0-255 bytes. Handle containing an alias and domain name performing queries defined in the Paymail protocol. Example: satoshi@tokenized.id

Manager

Manager is used to refer to a role that is responsible for the Management of an Entity.

Field Type Description
Type Role CEO, COO, CFO, etc. Found in 'Roles' in Specification/Resources Example: 5
Name varchar(tiny) Length 0-255 bytes. 0 is valid. Example: Satoshi Nakamoto

Oracle

A Oracle defines the details of a public Oracle.

Field Type Description
(Deprecated)Entity deprecated Deprecated for service contract address. Identifying information about the oracle.
(Deprecated)URL deprecated Deprecated for service contract address. Length 0-255 bytes. 0 is valid. If applicable: URL for REST/RPC Endpoint Example: http://oracle.tokenized.com/api/3650d9/version2010
(Deprecated)PublicKey deprecated Deprecated for service contract address. Length 0-255 bytes. 0 is not valid. Oracle Public Key (eg. Bitcoin Public key), used to confirm digital signed proofs for transfers. Can also be the same public address that controls a Tokenized Oracle.
OracleTypes uint(1)[tiny] The type of the oracle. 0 = Identity, 1 = Authority, 2 = Event. More than one value can be included to specify the oracle has more than one type.
EntityContract Address The entity contract address of the service on chain that defines the oracle.

Quantity Index

A QuantityIndex contains a quantity, and an index. The quantity could be used to describe a number of tokens, or a value. The index is used to refer to an input or output index position.

Field Type Description
Index uint(2) The index of the input/output (depending on context) sending/receiving the tokens. Example: 0
Quantity uint(8) Number of tokens being sent Example: 100

Reference Transaction

A bitcoin transaction and the outputs that it spends.

Field Type Description
Transaction varbin(tiny) A bitcoin transaction serialized in the bitcoin P2P format. Example: 0
Outputs varbin(large)[medium] The bitcoin outputs corresponding to the inputs for the transaction. Serialized in bitcoin P2P format. There must be the same count as there are inputs in the contained transaction and they must be in the same order.

Service

A definition of a service provided by an identity oracle to verify the administrator address is associated with the issuer entity identification information. Also if a contract operator is provided then it verifies that the contract operator address is associated with the specified contract operator identity information. For a child contract that references a parent entity contract the certificate verifies that the administrator address is associated with that entity contract.

Field Type Description
Type uint(1) Describes the type of service. 0 - Identity Oracle 1 - Authority Oracle 2 - Event Oracle 3 - Contract Operator Example: 0
URL varchar(tiny) The base URL of the service. For each service type there are predefined methods for determining the specific endpoints.
PublicKey PublicKey The public key used to verify and authorize the service.

Target Address

A TargetAddress defines a public address and quantity.

Field Type Description
Address Address Public address where the token balance will be changed.
Quantity uint(8) Qty of tokens to be frozen, thawed, confiscated or reconciled. For Contract-wide freezes 0 will be used. Example: 10000

Voting System

A VotingSystem defines all details of a Voting System.

Field Type Description
Name varchar(tiny) eg. Special Resolutions, Ordinary Resolutions, Fundamental Matters, General Matters, Directors' Vote, Poll, etc. Example: Special Resolutions
VoteType fixedchar(1) R - Relative Threshold, A - Absolute Threshold, P - Plurality. Relative Threshold means the number of counted votes must exceed the threshold % of total ballots cast. Abstentations/spoiled votes do not detract from the likelihood of a vote passing as they are not included in the denominator. Absolute Threshold requires the number of ballots counted to exceed the threshold value when compared to the total outstanding tokens. Abstentations/spoiled votes detract from the likelihood of the vote passing. For example, in an absolute threshold vote, if the threshold was 50% and 51% of the total outstanding tokens did not vote, then the vote cannot pass. 50% of all tokens would have had to vote for one vote option for the vote to be successful. Plurality means the most favoured option is selected, regardless of the number of votes cast or the percentage relative to other choices. Example: A
TallyLogic uint(1) 0 - Standard Scoring (+1 * # of tokens owned), 1 - Weighted Scoring (1st choice * Vote Max * # of tokens held, 2nd choice * Vote Max-1 * # of tokens held,..etc.) Example: 0
ThresholdPercentage uint(1) This field is ignored when VoteType is P (Plurality). Otherwise it is the percentage of ballots required for a proposal to pass. Valid values are greater than 0 and less than 100. 75 means 75% and greater. Only applicable to Relative and Absolute Threshold vote methods. The Plurality vote method requires no threshold value (NULL), as the successful vote option is simply selected on the basis of highest ballots cast for it. Example: 75
VoteMultiplierPermitted bool Where an asset has a vote multiplier, true must be set here for the vote multiplier to count, otherwise votes are simply treated as 1x per token.
HolderProposalFee uint(8) Token Owners must pay the fee amount to broadcast a valid Proposal. If the Proposal action is valid, the smart contract will start a vote. 0 is valid. Example: 100

Field Aliases

Field Type Description
Role uint(1) A role within an entity. (i.e. CEO, CFO) Example: 5
EntityType fixedchar(1) A type of entity. (i.e. Individual, Public Company) Example: I
Polity varchar(tiny) Polities (eg. Countries/Nation-States (ISO-3166 Alpha-3) Example: GBR
RejectionCode uint(1) Codes returned in rejection messages when a request is not accepted. Example: 10
Tag uint(1) Predefined tags for output metadata. Example: 1
Address varbin(small) A representation of a bitcoin address in raw format, with no check sum or encoding. Example: 20f8d521553a2b0de0ceba82b70c5dd184c6cd2f43
ContractCode bin(32) 32 randomly generated bytes. Each Contract Code should be unique. The Contract ID will be human facing and will be the Contract Code, with a checksum, encoded in base58 and prefixed by 'CON'. Contract ID = CON + base58(ContractCode + checksum). Eg. Contract ID = 'CON18RDoKK7Ed5zid2FkKVy7q3rULr4tgfjr4' Example: 260840c0b3d4dadb870cd34ffbfc47fed903fe7d94a7a5bab491fb728aebcc74
AssetType fixedchar(3) A code representing the type of asset and the structure of the payload. Example: CCY
AssetCode bin(20) Represents a unique identifier for an asset/token. Example: 0e6996402ea456156838652e3bd82c6c0986ef79
Timestamp uint(8) Represents a time, encoded as a 64 bit unsigned integer representing the number of nanoseconds since the Unix epoch. Example: 1594668650000000000
TxId bin(32) Represents a Bitcoin transaction ID, the double SHA256 hash of the serialized transaction. Example: 9d1ef0b1201c1dec3c1eb1caf758a988205226173e988e7a04afb4ea9977f506
PublicKey bin(33) Represents a compressed public key. Example: 027fed903fe7d94a7a5bab491fb728aebcc74260840c0b3d4dadb870cd34ffbfc4
Signature varbin(tiny) Represents a DER encoded elliptic curve signature. Example: 3044022036164b0c724e6f19e234306444a11631b2f8e47d05468a099928adce0dead62102205138a635827d61915483e7ca1a53b37975a9aa0617c78ef7ac199d94742c36cf