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