iT邦幫忙

2023 iThome 鐵人賽

DAY 21
0
Web 3

Web3 X 公共財系列 第 21

Day 21 - Hypercert初探

  • 分享至 

  • xImage
  •  

Github Doc

Hypercerts 是一個用於建立可擴展的回顧性獎勵系統工具以產生正向影響。

合約架構

interface 介面

IHypercertToken
This interface is the requirements set for hypercert-compliant tokens. This enables developer to use their own preferred token implementation or standard.

主要合約

HypercertMinter
Example implementation for a hypercert token that is an ERC1155 NFT under the hood with an Allowlist extension.

初看以上兩合約

IHypercertToken

重要的enum去限制轉手行為

 enum TransferRestrictions {
        AllowAll,
        DisallowAll,
        FromCreatorOnly
    }

及不同的mint方式

HypercertMinter

包含IHypercertToken、SemiFungible1155、AllowlistMinter、PausableUpgradeable
重要的檢查為這個

 function _beforeTokenTransfer(
        address operator,
        address from,
        address to,
        uint256[] memory ids,
        uint256[] memory amounts,
        bytes memory data
    ) internal virtual override {
        super._beforeTokenTransfer(operator, from, to, ids, amounts, data);

        // By-pass transfer restrictions for minting and burning
        if (from == address(0)) {
            // Minting
            return;
        } else if (to == address(0)) {
            // Burning
            return;
        }

        // Transfer case, where to and from are non-zero
        uint256 len = ids.length;
        for (uint256 i; i < len; ) {
            uint256 typeID = getBaseType(ids[i]);
            TransferRestrictions policy = typeRestrictions[typeID];
            if (policy == TransferRestrictions.DisallowAll) {
                revert Errors.TransfersNotAllowed();
            } else if (policy == TransferRestrictions.FromCreatorOnly && from != creators[typeID]) {
                revert Errors.TransfersNotAllowed();
            }
            unchecked {
                ++i;
            }
        }
    }

期許

  • 希望這次可以練習看看Testing怎麼寫 Day24
  • 找到Hypercert Audit record,未來希望約Day 25 可以看一下Hypercert 的audit 紀錄。

上一篇
Day 20 - 回看Allo.sol + 學習solidity 紀錄
下一篇
Day 22- 細看官方介紹、IHypercertToken及ERC1155使用
系列文
Web3 X 公共財30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言