ERC-1967, còn được gọi là giao thức “Proxy Account Allowance”, là một giao thức chuẩn ERC đề xuất trên blockchain Ethereum. Giao thức này giúp cải thiện tính linh hoạt và quản lý phân quyền trong việc quản lý quyền truy cập và phân quyền cho tài khoản proxy (tài khoản phụ, giải thích chi tiết bên dưới).
Tài khoản proxy được sử dụng để thực hiện các hành động thay mặt cho tài khoản chính. Tài khoản proxy giúp tăng tính linh hoạt và quản lý phân quyền trong việc thay đổi, nâng cấp hoặc thay đổi hợp đồng thông minh mà không cần thay đổi địa chỉ của tài khoản chính.
ERC-1967 giới thiệu một cơ chế cho phép tài khoản proxy được ủy quyền để thực hiện các hành động thay mặt cho tài khoản chính. Điều này có nghĩa là tài khoản proxy có quyền truy cập và thực hiện các thao tác trên hợp đồng thông minh như tài khoản chính mà nó đại diện cho. Giao thức này cung cấp sự linh hoạt và quản lý phân quyền cao hơn trong việc quản lý quyền truy cập và quyền hạn của các tài khoản trên blockchain.
Dưới đây là một ví dụ đơn giản về cách sử dụng giao thức ERC-1967 trong một hợp đồng thông minh:
pragma solidity ^0.8.0;
import "@openzeppelin/contracts/proxy/ERC1967/ERC1967Proxy.sol";
contract MyContract {
uint private myData;
function setData(uint newValue) public {
myData = newValue;
}
function getData() public view returns (uint) {
return myData;
}
}
contract MyProxy {
ERC1967Proxy private proxy;
address private admin;
constructor(address _implementation) {
proxy = new ERC1967Proxy(_implementation);
admin = msg.sender;
}
function upgrade(address _newImplementation) public {
require(msg.sender == admin, "Only the admin can call this function.");
proxy.upgradeTo(_newImplementation);
}
function() external payable {
// Forward all calls to the proxy
(bool success,) = proxy.delegatecall(msg.data);
require(success, "Proxy call failed.");
}
}
Trong ví dụ trên, giao thức ERC-1967 được triển khai thông qua hợp đồng MyProxy
, là một tài khoản proxy cho hợp đồng MyContract
. Hợp đồng MyContract
định nghĩa các hàm setData
và getData
để thao tác với dữ liệu myData
. Hợp đồng MyProxy
cung cấp chức năng nâng cấp (upgrade) hợp đồng MyContract
bằng cách gọi hàm upgrade
và sử dụng ERC1967Proxy
để quản lý việc nâng cấp hợp đồng.
Giao thức ERC-1967 giúp đơn giản hóa việc nâng cấp và quản lý hợp đồng thông minh bằng cách sử dụng tài khoản proxy. Nó mang lại tính linh hoạt và khả năng nâng cấp cao hơn cho các ứng dụng blockchain trên nền tảng Ethereum.
Vietnam Pham – Click Digital
- Nếu bạn muốn đầu tư vào các công ty quảng cáo blockchain, chỉ cần MUA token Saigon (SGN) trên Pancakeswap: https://t.co/KJbk71cFe8 (đừng lo lắng về tính thanh khoản, mà hãy trở thành nhà đầu tư sớm)
- Được hỗ trợ bởi Công ty Click Digital
- Nâng cao kiến thức về blockchain
- Địa chỉ token trên mạng BSC: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
- Twitter: https://twitter.com/SaigonSGN135
- Staking SGN: http://135web.net
- If you’d like to invest in blockchain advertising companies, just BUY token Saigon (SGN) on Pancakeswap: https://t.co/KJbk71cFe8 (do not worry about low liquidity, be the early investor)
- Backed by Click Digital Company
- Enhancing blockchain knowledge
- BSC address: 0xa29c5da6673fd66e96065f44da94e351a3e2af65
- Twitter: https://twitter.com/SaigonSGN135
- Staking SGN: http://135web.net
Digital Marketing Specialist