Deploy graph-node (The Graph) in Kubernetes (AWS EKS)
graph-node is an open source software that indexes blockchain data, as known as indexer. Though the cost of running a self-hosted graph node could be pretty high. We're going to deploy a self-hosted...
View ArticleDeploy Ethereum RPC Provider Load Balancer with HAProxy in Kubernetes (AWS EKS)
To achieve high availability and better performance, we could build a HAProxy load balancer in front of multiple Ethereum RPC providers, and also automatically adjust traffic weights based on the...
View Articlehardhat-deploy: Upgradeable Contracts with Linked Libraries
Library Assume ContractA imports LibraryA, when deploying ContractA, LibraryA is embedded into ContractA if LibraryA contains only internal functions. If LibraryA contains at least one external...
View ArticleSolidity: calldata, memory, and storage
Variables There are three types of variables in Solidity: Global variables Provide information about the blockchain For example, block.number, block.timestamp, or msg.sender State variables Declared...
View ArticleSolidity: CREATE vs CREATE2
In Solidity, there are two opcodes for creating contracts: CREATE and CREATE2. Also, the deployed contract address can be precomputed via: keccak256(deployerAddress, deployerNonce) if you're using...
View ArticleHow to Stay Safe Online: Tips for Personal Security
How I learned to "start worrying" and love the illusion of feeling safe. Digital security and privacy have become more important than ever. With cyber threats constantly evolving, it is crucial to...
View ArticleSolidity: Read Contract Storage by Slots with Foundry
State variables are stored in different "slots" in a contract, and each slot is 32 bytes (256 bits). However, multiple adjacent state variables declared in the contract may be packed into the same slot...
View ArticleBuild Docker Images using Google Cloud Build from Your GitHub Repository
Triggering a Docker image build on Google Cloud Build when pushing commits to a GitHub repository. Create Google Cloud Build Configuration File Create a cloudbuild.yaml in the root folder: steps: - id:...
View ArticleSolidity: abi.encode() vs abi.encodePacked() vs abi.encodeWithSignature() vs...
There are some encode/decode functions in Solidity, for instance: abi.encode() will concatenate all values and add padding to fit into 32 bytes for each values. To integrate with other contracts, you...
View ArticleSolidity: Multicall - Aggregate Multiple Contract Calls
There are different implementations of multicall: https://github.com/Vectorized/multicaller https://github.com/mds1/multicall https://github.com/AmazingAng/WTF-Solidity/tree/main/55_MultiCall In the...
View Article