😼 seeloop的小站
搜索
快照
归档
Github
eddie
文章
5
标签
3
Github
归档
搜索
标签
编程相关
Solidity loop(2) —— 实践
发布于: 2024-11-10
最后更新: 2024-11-10
次查看
Solidity
type
status
date
slug
summary
tags
category
icon
password
💡
前言: 这是我前段时间学习Solidity时的笔记,现在做一整理,记录了我在学习Solidty中的一些思考,以及一些容易遗漏的记录;后续随着理解的更加深入,仍会同步更新; 如果需要详细学习相关知识,请参考‣ ,本文仅推荐用于伴读。

ERC20、代币水龙头

  • IERC20
    • 相关代码:
      • tokenfaucet erc20
     

    空投合约

    • 空投合约
      • _to.call(value:amount){””} 这里的value默认单位为wei,如果需要发送ether,可以amount * 1 ether 来进行换算
    • 相关代码 airdrop合约
     

    ERC721

    • IERC165 检查一个智能合约是否支持ERC721的接口
      • 确保目标合约实现了onERC721Received()函数
        • 相关代码 erc721
         

        荷兰拍卖、默克尔树

        • merkle tree
          • 通过两两哈希,来获取根节点,利用根节点的可验证性,来保护整个数据不被篡改;Merkle proof即为从叶子节点到根节点的路径;
        Solidity中的默尔克树终极指南
        全面了解默尔克树,默尔克树使用场景,构建原理,如何构造默尔克树,如何在 Solidity 里验证默尔克树,以及 默克尔的未来...
        Solidity中的默尔克树终极指南
        https://learnblockchain.cn/article/5297
        Solidity中的默尔克树终极指南
        • 相关代码
          • dutchAuction.sol
            merkletree.sol
         

        数字签名、链上随机数

        • 椭圆曲线签名算法ECDSA 签名目的为证明当前为私钥的持有者、以及被签名数据没有被篡改过; 整个博客讲的非常详细
          • What is the math behind elliptic curve cryptography? | HackerNoon
            When someone sends bitcoin to you, they send the bitcoin to your address. If you want to spend any of the bitcoin that is sent to your address, you create a transaction and specify where your bitcoin ought to go. Such a transaction may look like:
            What is the math behind elliptic curve cryptography? | HackerNoon
            https://hackernoon.com/what-is-the-math-behind-elliptic-curve-cryptography-f61b25253da3
            What is the math behind elliptic curve cryptography? | HackerNoon
        • 和前端如何验证流程
          • hash(A,B) → metamask签名 →signature hash(A,B) →msgHash verify(msgHash,signature) → signer,这个signer 是否和metamask签名的公钥是否相同
        • 调用LINK生成随机数 注意:订阅 ID 类型已从 VRF V2 中的 uint64 变为 VRF V2.5 中的 uint256
        • 相关代码
          • signature.sol
            RandomNum.sol
         

        NFT交易所、ERC1155

        • ERC1155 在ERC721中,每个代币都有一个tokenId作为唯一标识,每个tokenId只对应一个代币;而在ERC1155中,每一种代币都有一个id作为唯一标识,每个id对应一种代币。
        • 代码
          • NftSwap.sol
            ERC1155.sol
         

        WETH、分账、线性释放、代币锁

        • 函数参数的位置指定 主要针对引用类型:数组、结构体、映射、字符串 memory:表示数据将被存储在内存中,适用于需要修改或者临时存储的数据,允许在函数内容 修改参数内容,但会消耗更多gas; calldata:calldata为只读,最省gas,直接从调用数据中读取,不需要复制到内存;
        • 代码
          • WETH.sol
            PaymentSplit.sol
            TokenVesting.sol
            TokenLocker.sol
         

        代理合约、可升级合约、透明代理、通用可升级代理

        • 代理合约 在fallback()回调函数中基于delegatecall来调用被代理合约;
          • 选择器冲突 函数选择器为函数签名的哈希的前4个字节;
            • 如”burn(uint256)”和(collate_propagate_storage()”具有相同的选择器;
          • 透明代理 管理员:调用代理合约的可升级函数对合约升级,不能通过回调函数调用逻辑合约 其他用户:不能调用可升级函数,但是可以调用逻辑合约的函数。
          • 通用可升级代理 将升级函数放在逻辑合约中,并检查调用者是否为管理员;
          • 相关代码 ProxyContract case
            • UUProxyContract case
           

          多签钱包

          • 多签钱包 通过一个bytes数组来存储签名,之后根据每个签名的长度为65进行分离,挨个验证,当通过数目大于等于threshold后,执行交易;
            • 代码 MultisigWallet.sol
             

            ERC4626代币化金库标准、EIP712类型化数据签名

            • ERC4626 用vault这个名称不太好理解到底在干嘛,应该换为shareToken,这个名称会好理解一些,可以视作veToken的前身;
            • EIP712 钱包会展示签名消息的原始数据,用户可以在验证数据符合预期之后签名;
              • 相关代码
                • sharedToken.sol
                  EIP712Storage.sol
               

              ERC-2612 ERC20Permit,多重调用

              • Nonce补充 nonce用于确认交易顺序,撤销pending中的交易,确定生成的合约地址
              • ERC20Permit 这里的用途主要是分离permit的发起者和gas的付费人(实际进行approve)的两个角色,用户仅仅需要进行签名即可进行交易,用于近似的cex体验;
              • Multicall calldata同样可以修饰结构体的声明,Call calldata calli;calli直接从调用数据中读取,不需要复制到内存,从而节省gas;
              • 相关代码 ERC20Permit.sol MultiCall.sol
               

              去中心化交易所、闪电贷

              • gas 计算 通过opcodes,以太坊规定了每个opcode的gas消耗,复杂度越高的opcodes消耗越多的gas;如ADD操作消耗3 gas,SSTORE操作消耗20000 gas等等
              • flashloan 也就是在一笔TX中同时完成借贷-执行-还款三个行为;
              • 作者:eddie
              • 链接:https://www.binlog.com/article/13a4ec7d-70d7-80cf-ab5f-d2cba1355184
              • 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。
              相关文章
              Solidity loop(3) —— ethers.js
              Solidity loop(1) —— 基础
              Solidity loop(3) —— ethers.jsSolidity loop(1) —— 基础
              Loading...
              eddie
              eddie
              quantity,efficacy,quality
              文章
              5
              标签
              3
              最新发布
              Solidity loop(3) —— ethers.js
              Solidity loop(3) —— ethers.js
              2024-11-10
              Solidity loop(1) —— 基础
              Solidity loop(1) —— 基础
              2024-11-10
              Solidity loop(2) —— 实践
              Solidity loop(2) —— 实践
              2024-11-10
              SnapShot
              SnapShot
              2024-10-30
              hello-world
              hello-world
              2024-9-13
              2021-2025 eddie.

              seeloop的小站 | quantity,efficacy,quality

              Powered by NotionNext 4.7.0.