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

Exhibit 4.4

 

 

 

INX Smart Contract

 

Description

 

V.2.2

 

July 7, 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.
     
  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.

 

2

 

 

 

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

-       Validate should pass (0) on proxy contract (external and upgradable validation)

InxToken.sol Yes
balance Of Check the balance of an address (ERC20) and returns the value InxToken.sol Yes
update Inx Service Updating the address of the proxy contract InxToken.sol Yes
Constructor (inx token) Should receive parameter of the initial address of the proxy validation InxToken.sol Yes
lock Lock and amount and set its release time (EPOCH) for a specified address Timelock (InxToken.sol) Yes
release Immediately release amount for a specified address Timelock (InxToken.sol) Yes
check None Lock Amount

This function receives an address and an amount (usually the value for transfer) and checks if the amount is locked.

If the return value is equal or greater to the amount that was sent, then the whole amount is NOT LOCKED and can be transferred.

If the returned value is 0, that means that the WHOLE AMOUNT IS LOCKED and cannot be transferred.

Timelock (InxToken.sol) Yes

 

3

 

 

 

check Lockup 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 Timelock (InxToken.sol) Yes
set White List 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.  

Whitelisting

(InxToken.sol)

Yes
is WhiteListed Returns (bool) the whitelisting status of an address

Whitelisting

(InxToken.sol)

Yes
get WhiteList Data Returns the data (string) of the whitelisted address.

Whitelisting

(InxToken.sol)

Yes
check WhiteList Status Checks the whitelist status of an address

Whitelisting

(InxToken.sol)

Yes
get WhiteList Data Get the data that is set with a whitelist address Whitelisting Yes
increase Approval Increase an approved amount to spent. InxToken Yes
decrease Approval Decrease approval amount to spent. InxToken Yes
add Whitelister Adds an address that is approved for whitelisting other addresses InxToken Yes
remove Whitelister Removes an address from the addresses that are approved for whitelisting InxToken Yes

 

 

 

4