Master Contract Token

From Smart Economy Wiki
Jump to: navigation, search
Ticker symbol MCT
Initial release May 8, 2018; 6 months ago (2018-05-08)[1]
Code repository MCT Github Repo
Written in Python
Circulating supply 580 million
Supply limit 580 million


Master Contract Token (MCT) is a utility token for NEO developed by Splyse to solve limitations in NEO's smart contract functionality. MCT is a NEP-5-compatible token implementation with some additional features. The most notable being the ability for third-party smart contracts to send, receive, and hold it.[1]

Smart contracts in the NEO ecosystem have the ability to receive funds (system assets like NEO or GAS), but they cannot send funds without the intervention of off-chain code that responds to events emitted by the smart contract and creates and broadcasts new transactions.

MCT is directly tradable by smart contracts without off-chain code, has the ability to pass additional parameters along with a token transfer to a smart contract and offers “staked storage” to contracts holding a minimum amount of MCT.[2]

With these features MCT token becomes a utility token for the NEO Smart economy. Most utility tokens on the NEO blockchain are built for a specific dApp. However, MCT will be be a utility token used by multiple dApps, similar to system assets like NEO/GAS. It will not be tied to any single dApp. [3]


Receiving MCT tokens from a smart contract:

  1. The existing NEP-5 'transfer' implementation in MCT is modified so that the scripthash of the recipient of the 'transfer' is checked against all deployed smart contracts on the blockchain.
  2. If the scripthash belongs to a smart contract (determined by 'GetContract(scripthash)' NEO API call), the transfer implementation dynamically invokes the 'OnTokenTransfer' operation in that contract.
  3. The 'OnTokenTransfer' operation informs the third-party smart contract that it has been delegated to receive a certain balance of MCT tokens.
  4. 'OnTokenTransfer' can be written to perform any function during its execution phase, and returns True if the token transfer should be finalized, False otherwise. In the case that a smart contract does not have support for receiving tokens, invoking the 'onTokenTransfer' operation should fail, also preventing the transfer from occurring and protecting against user error (e.g. pasting the wrong recipient scripthash/address).
  5. Depending on the return value from the third-party smart contract, the MCT NEP-5 implementation finalizes the transfer.
  6. Optionally, the invoker can overload the 'transfer' call with additional arguments over and above the required 'from', 'to', and 'amount' for the receiving contract's 'OnTokenTransfer' operation to use. This allows for more capability in the receiving contract's code with only minor changes to existing wallet software.

Sending MCT tokens from a smart contract:

  1. The third party smart contract invokes the 'transfer' operation of the MCT NEP-5 contract with its own scripthash as sender, along with the recipient scripthash and the amount to be transferred.
  2. The MCT NEP-5 'transfer' implementation detects that the transfer is coming from an address that corresponds to a known smart contract, and instead of using 'CheckWitness(scripthash)' to verify the owner of the funds, it verifies that the calling contract's scripthash matches the sender's.

Staked storage

Third party contracts that stake a minimum of 10,000 MCT can use the MCT smart contract as a storage proxy. The MCT amount required to stake can be lowered over time if the value of MCT rises significantly. The minimum stake can never be raised, only lowered. Using staked storage in the MCT contract means a smart contract author can deploy a contract requiring basic storage capabilities for 90 GAS instead of 490 GAS.


There was no public token sale/initial coin offering as MCT was delivered as the final product. One airdrop distributed all 567,442,000 MCT tokens to NEP-5 token holders. To receive the airdrop, NEO addresses that held any NEP-5 token were airdropped 1,000 MCT, regardless of the amount of the NEP-5 token held. The snapshot of NEP-5 tokens held on NEO private wallets was taken at 00:00 (UTC) on May 8, 2018.

The airdrop distribution method was designed to provide MCT with the most active users in the NEO smart economy, rather than the wealthiest token holders.

Total Supply

The total supply of MCT is 580,000,000 tokens, which has been completely distributed. 98% of MCT were distributed to NEP-5 token holders, and Splyse kept 2% to offset development and deployment costs and to provide ongoing support for users of the token.


External links