A computer-implemented method for blockchain data storage at a blockchain node of a blockchain network, the method comprising: executing instructions of a smart contract, the instructions implementing a checkpoint feature for triggering taking of snapshots of state information of current state trees associated with a contract account, wherein the current state trees are associated with selected blocks of a blockchain of the blockchain network that are frequently accessed; in response to the executed instructions of the smart contract, generating, a first snapshot of a current state tree of a block from the selected blocks of the blockchain during creation of a newest block of the blockchain, wherein the current state tree is associated with a fixed depth Merkle tree, FDMT, wherein the FDMT includes i) a historic state tree that stores state information corresponding to every block of the blockchain and ii) the current state tree that is associated with the contract account and stores state information corresponding to the block from the selected blocks of the blockchain, wherein the historic state tree and current state tree store respective historical and current account states including state information about blockchain accounts, wherein the blockchain accounts include externally owned accounts and contract accounts, wherein the historic state tree and the current state tree include key-value pairs, wherein a key of a first key-value pair of a node of the historic state tree is a hash value of a corresponding value of the first key-value pair, wherein the value of the first key-value pair is a value of the node of the historic state tree, and wherein a key of a second key-value pair of the current state tree includes a node identifier that uniquely identifies a node of the current state tree and a block identifier that corresponds to the block, wherein the first snapshot of the current state tree of the block includes a Merkle path of storage roots of the contract state trees associated with the contract account included in a world state tree; adding, as an identifier of the snapshot, the block identifier associated with the block; storing the snapshot of the current state tree at a specific directory of a database; receiving a request to retrieve the state information associated with the contract account; determining, through a local call by the blockchain node, that a snapshot of state information associated with the contract account exists based on the identifier of the snapshot; and providing the state information associated with the contract account based on the snapshot in response to the request. executing instructions of a smart contract, the instructions implementing a checkpoint feature for triggering taking of snapshots of state information of current state trees associated with a contract account, wherein the current state trees are associated with selected blocks of a blockchain of the blockchain network that are frequently accessed; in response to the executed instructions of the smart contract, generating, a first snapshot of a current state tree of a block from the selected blocks of the blockchain during creation of a newest block of the blockchain, wherein the current state tree is associated with a fixed depth Merkle tree, FDMT, wherein the FDMT includes i) a historic state tree that stores state information corresponding to every block of the blockchain and ii) the current state tree that is associated with the contract account and stores state information corresponding to the block from the selected blocks of the blockchain, wherein the historic state tree and current state tree store respective historical and current account states including state information about blockchain accounts, wherein the blockchain accounts include externally owned accounts and contract accounts, wherein the historic state tree and the current state tree include key-value pairs, wherein a key of a first key-value pair of a node of the historic state tree is a hash value of a corresponding value of the first key-value pair, wherein the value of the first key-value pair is a value of the node of the historic state tree, and wherein a key of a second key-value pair of the current state tree includes a node identifier that uniquely identifies a node of the current state tree and a block identifier that corresponds to the block, wherein the first snapshot of the current state tree of the block includes a Merkle path of storage roots of the contract state trees associated with the contract account included in a world state tree; adding, as an identifier of the snapshot, the block identifier associated with the block; storing the snapshot of the current state tree at a specific directory of a database; receiving a request to retrieve the state information associated with the contract account; determining, through a local call by the blockchain node, that a snapshot of state information associated with the contract account exists based on the identifier of the snapshot; and providing the state information associated with the contract account based on the snapshot in response to the request.