EX-4.4 4 ff12019a5ex4-4_inxlimited.htm INX SMART CONTRACT DESCRIPTION V.2.2, DATED JULY 7, 2019

Exhibit 4.4

 

 

 

 

 

 

 

 

INX Smart Contract

 

Description

 

V.3.0

 

December 12, 2019

 

 

 

 

 

 

 

1

 

 

Introduction

 

“Smart contracts” are self-executing rules in a programmable computer language on the blockchain that are enforced by the participants of the blockchain’s network. The Ethereum blockchain is an open-source, public, blockchain-based distributed computing platform that allows for decentralized programming of applications and the use of smart contracts. Many blockchain assets are developed in accordance with the “ERC20” standard, which allows developers to program them to include smart contracts that function within the Ethereum ecosystem.

 

The INX Token is an ERC20 smart contract. Material features of the INX Token included in the source code are the following:

 

1.Designation and Number of Tokens. The INX Tokens of INX Limited (the “Company”) shall be designated as “INX Tokens.” The number of authorized INX Tokens is 200,000,000. The technical limits on the fractional division of INX Tokens is to eighteen decimal places (0.000000000000000001). The INX Token is an ERC20 blockchain asset that is programmed using a smart contract written in Solidity that is compatible with the Ethereum blockchain. The ERC-20 standard is a technical standard used for smart contracts on the Ethereum blockchain so that tokens can be transferred to a digital wallet.

 

2.To be deemed to be a holder of record of INX Tokens, a holder must (a) register an Ethereum wallet with the Company to be included on the Whitelist Database and (b) have the public wallet address of this Ethereum wallet recorded on the “INX Token distributed ledger” as the holder INX Tokens.

 

3.The “Whitelist Database” is a database stored on the data section of the INX Token smart contract. The purpose of the Whitelist Database is to validate decentralized transfers of the INX Token. The Whitelist Database contains a list of individuals and entities that have satisfied the Company’s KYC/AML compliance procedures and thus are eligible to hold INX Tokens. In order for an Ethereum wallet address to be included in the Whitelist Database, the prospective holder of record of the INX Tokens must have completed know your customer and anti-money laundering (“KYC/AML”) compliance procedures, or other similar procedures, to the satisfaction of the Company, or an agent of the Company that is expressly authorized in writing by the Company.

 

The INX Token smart contract incorporates our Whitelist Database, which restricts the transfer of INX Tokens such that a transfer is not executed and recorded on the INX Token Distributed Ledger unless both the digital wallet addresses of the sender and receiver are listed in the Whitelist Database.

 

4.The “INX Token distributed ledger” references the ledger of ownership of INX Tokens that is recorded on the Ethereum blockchain. The INX Token distributed ledger records the public wallet addresses of all Ethereum wallets that hold INX Tokens and the balance of INX Tokens in each wallet address. INX smart contract is an Ethereum smart-contract written and developed in solidity, and as such, it is designed and programmed to be deployed on the Ethereum public mainnet network. Being deployed on Ethereum public network, make it available to all Ethereum tools, including Etherscan and other block explorers.

 

5.Transfer. INX Tokens may be transferred only among Ethereum wallets included in the Whitelist Database. Transfers of INX Tokens will be executed by the INX Token smart contract under conditional permission that the wallet addresses of both the sender and receiver of INX Tokens are listed on the Whitelist Database. The INX Token smart contract will verify that both the sender and the receiver wallet addresses are included in the Whitelist Database prior to approving or rejecting the transfer. If either the sender or receiver wallet address is not listed in the Whitelist Database, the smart contract will reject the transfer and the INX Token Distributed Ledger will not be updated.

 

2

 

 

6.The INX Token smart contract incorporates a lock function, which restricts the transfer of INX Tokens to or from a specified digital wallet address for a specified time. Once the lock function is activated, INX Tokens cannot be transferred from the locked address until the lock-up period has elapsed.

 

7.The INX smart contract also includes a revoke function allowing the Company or its transfer agent, if any, to unilaterally transfer INX Tokens held in a digital wallet controlled by a third party.

 

Main Functions

 

The following table covers the main (not all) functions of the smart contract.

 

Function Description Ref Tested
transfer

Transfer (ERC20) funds(inx) from one address to another.

-      Need to have balance

-      Value (amount) should not be locked

-      Evaluates whether a transfer should be allowed or not based on the transfer restrictions

InxToken.sol Yes
balanceOf Check the balance of an address (ERC20) and returns the value IERC1404Validators.sol Yes
updateTransferRestrictions Updating the address of the proxy contract InxToken.sol Yes
Constructor (inx token) Should receive parameters such as the token name and token symbol InxToken.sol Yes
lock Lock an amount and set its release time (EPOCH) for a specified address Timelockable.sol Yes
release Immediately release amount for a specified address Timelockable.sol Yes
checkTimelock Return true if the given account has enough unlocked tokens to send the requested amount Timelockable.sol Yes
checkLockup Receives address and return the locking status as an array of 2 elements, release time (EPOCH) and amount. If both are 0, then there is no locked amount for this address Timelockable.sol Yes

 

 

3

 

 

setWhiteList Enable owner to set whitelisted status (bool) for an address. A whitelisted address is a struct of boolean (the status) and a string (data). For whitelisting an address the value should be set to true. If the status is changing, the whitelisting should be set to false.  

Whitelistable.sol

 

Yes
getWhiteListData Returns the data (string) of the whitelisted address.

Whitelistable.sol

 

Yes
getWhiteListStatus Returns (bool) the whitelisting status of an address

Whitelistable.sol

 

Yes
checkWhitelists Returns (bool) the whitelisting status of a transfer between two addresses

Whitelistable.sol

 

Yes
addWhitelister Adds an address that is approved for whitelisting other addresses

WhitelisterRole.sol

 

Yes
removeWhitelister Removes an address from the addresses that are approved for whitelisting

WhitelisterRole.sol

 

Yes
revoke Allows an administrator to move tokens from a target account to their own.

Revocable.sol

 

Yes
pause Pause all transfer and transferFrom transactions, all other transactions including approve and all administrative transactions are still functional when the contract is paused.

Pausable.sol

 

 
       

 

 

4