A system for implementing a smart contract on a blockchain, comprising: a memory to store instructions; and one or more processors using the instructions stored in the memory to perform operations including: segregating the smart contract into an updateable smart contract and a plurality of non-updateable smart contracts, where each non-updateable smart contract handles persistent data storage and retrieval to the blockchain for data that needs to be permanently accessible and the updateable smart contract does not contain data storage and retrieval to the blockchain; deploying each non-updateable smart contract and a first version of the updateable smart contract; the first version of the updateable smart contract self-registering with the non-updateable smart contracts upon deployment by calling an interface of every non-updateable smart contract and providing the non-updateable smart contracts with an address of the first version of the updateable smart contract; at least one of the non-updateable smart contracts storing the address of the first version of the updateable smart contract to the blockchain; the non-updateable smart contracts retrieving permanent data from the blockchain and passing the permanent data to the first version of the updateable smart contract; the updateable smart contract performing a computation on the permanent data and returning updated data based on the computation of the permanent data back to the at least one non-updateable smart contract; and the at least one non-updateable smart contract storing the updated data to the blockchain. a memory to store instructions; and one or more processors using the instructions stored in the memory to perform operations including: segregating the smart contract into an updateable smart contract and a plurality of non-updateable smart contracts, where each non-updateable smart contract handles persistent data storage and retrieval to the blockchain for data that needs to be permanently accessible and the updateable smart contract does not contain data storage and retrieval to the blockchain; deploying each non-updateable smart contract and a first version of the updateable smart contract; the first version of the updateable smart contract self-registering with the non-updateable smart contracts upon deployment by calling an interface of every non-updateable smart contract and providing the non-updateable smart contracts with an address of the first version of the updateable smart contract; at least one of the non-updateable smart contracts storing the address of the first version of the updateable smart contract to the blockchain; the non-updateable smart contracts retrieving permanent data from the blockchain and passing the permanent data to the first version of the updateable smart contract; the updateable smart contract performing a computation on the permanent data and returning updated data based on the computation of the permanent data back to the at least one non-updateable smart contract; and the at least one non-updateable smart contract storing the updated data to the blockchain. segregating the smart contract into an updateable smart contract and a plurality of non-updateable smart contracts, where each non-updateable smart contract handles persistent data storage and retrieval to the blockchain for data that needs to be permanently accessible and the updateable smart contract does not contain data storage and retrieval to the blockchain; deploying each non-updateable smart contract and a first version of the updateable smart contract; the first version of the updateable smart contract self-registering with the non-updateable smart contracts upon deployment by calling an interface of every non-updateable smart contract and providing the non-updateable smart contracts with an address of the first version of the updateable smart contract; at least one of the non-updateable smart contracts storing the address of the first version of the updateable smart contract to the blockchain; the non-updateable smart contracts retrieving permanent data from the blockchain and passing the permanent data to the first version of the updateable smart contract; the updateable smart contract performing a computation on the permanent data and returning updated data based on the computation of the permanent data back to the at least one non-updateable smart contract; and the at least one non-updateable smart contract storing the updated data to the blockchain.