在我们的上个系列文章跟我一起阅读并修复某知名DEX交易所源码的最后,我们提到了proxy合约与admin合约,在这个新系列中,我将和大家一起使用solidity完成一个小游戏,并使用web3做一个客户的游戏客户端,并与之完成交互。现在让我们开始吧!
首先我们考虑到,一个游戏具有相当复杂的逻辑,而如果使用solidity编写,一旦合约部署到链上,那将无法更改,此时如果游戏要更新怎么办?那有没有什么办法可以让我们的合约可以更新呢?这样不就可以解决这个问题了吗?答案是有的,就是使用PROXCY合约。下面让我们看一下proxcy合约的原型。
contract Proxy {
/**
* @dev Tells the address of the implementation where every call will be delegated.
* @return address of the implementation to which it will be delegated
*/
function implementation() public view virtual returns (address){}
/**
* @dev Fallback function allowing to perform a delegatecall to the given implementation.
* This function will return whatever the implementation call returns
*/
fallback () payable external {
address _impl = implementation();
require(_impl != address(0));
assembly {
let ptr := m

本文介绍了如何使用Solidity创建一个在线小游戏,并探讨了proxy合约在智能合约更新中的作用。文章详细解释了call、delegatecall和callcode的区别,特别是在合约调用上下文和执行环境中的差异,为后续的游戏合约设计奠定了基础。
最低0.47元/天 解锁文章
1044

被折叠的 条评论
为什么被折叠?



