分享百科

solidity 编程

本视频介绍了如何将小于32字节的状态变量打包到单个插槽中,并介绍了位掩码的基本技巧,以便手动读取和写入这些状态变量。首先,讲解了状态变量如何在单个插槽中存储,例如一个4字节的状态变量和一个2字节的状态变量可以一起存储在一个32字节的插槽中。接着,介绍了如何使用位掩码来更新或读取这些变量。通过示例,展示了如何创建一系列1和0的位掩码,并通过位移操作将其调整到所需位置。此外,还讲解了如何反转位掩码以满足不同的需求。最后,预告了下一期视频将使用这些位掩码技巧来读取和写入打包在单个插槽中的状态变量。
941
0
0
2025-01-27 08:56
本视频系列将介绍EBM存储,重点学习状态变量在EBM存储中的存储位置及如何使用汇编语言读写这些变量。首先,我们将了解EO语言,它是Solidity中的内联汇编语言,主要用于读写状态变量。EO支持的唯一数据类型是bytes32。接着,我们将探讨如何在Solidity中使用EO进行变量赋值,并了解状态变量在EBM中的存储方式。状态变量以32字节为单位存储,每个合约最多有2的256次方个槽位,槽位按声明顺序分配。对于小于32字节的状态变量,它们会被打包存储。我们将通过sstore和sload函数进行示例,sstore用于将值存储到指定槽位,而sload用于从槽位读取值。通过这些示例,我们将掌握如何在EBM存储中读写状态变量。
1907
0
0
2025-01-27 08:56
本次讲座由Andrew Miller主讲,主要介绍智能合约的基本概念及其在区块链上的应用。智能合约被视为区块链上的程序对象,而非传统意义上的合同。讲座内容包括Solidity编程基础、CryptoKitties拍卖机制案例分析、智能合约与法律合同的比较,以及代币的概念,涵盖可替代代币(如ERC20)和不可替代代币(如ERC721)的特点。通过实例,Miller强调了智能合约的自动执行特性及其在去中心化金融(DeFi)中的重要性,鼓励学习者理解和应用这些技术。
374
0
0
2025-01-27 08:04
在 DEFCON 7 的演讲中,讲者分享了智能合约开发者应关注的编程语言特性,尤其是基于其在 OpenZeppelin Contracts 项目的经验。OpenZeppelin Contracts 的初衷是提供可重用的合约库,以减少开发者引入错误的风险。然而,随着时间推移,开发者需要在库的基础上添加自定义行为,因此确保安全性和可扩展性成为了关键。 讲者以 ERC20 代币为例,强调了安全抽象的重要性。通过提供一个安全的 mint 函数,确保了代币合约的基本属性得以保持,避免了开发者在实现时犯错。此外,讲者指出,继承机制虽然是实现可扩展性的主要方式,但也可能导致不一致的行为,增加了出错的风险。 随着以太坊网络的拥堵,开发者对 gas 效率的关注日益增加,手写汇编代码成为一种趋势。尽管这种做法在某些情况下能提高效率,但讲者警告说,过度依赖低级细节可能会分散开发者的注意力,影响合约的安全性。 最后,讲者呼吁探索新的编程语言设计,尤其是借鉴函数式编程语言的特性,以期在未来的智能合约开发中实现更高的安全性和效率。这一探索不仅有助于解决当前的局限性,也为智能合约的未来发展开辟了新的可能性。
513
0
0
2025-01-23 10:37
本次会议围绕区块链技术在金融领域的应用展开,特别是传统金融(TradFi)与去中心化金融(DeFi)之间的互动与融合。与会者包括来自不同背景的专家,讨论了CBDC(中央银行数字货币)及其对金融市场的影响。专家们认为,CBDC与商业银行货币是互补的,能够提升支付效率,但不会根本改变现有支付方式。会议还探讨了隐私保护与合规性之间的矛盾,强调了零知识证明(ZKP)等技术在确保交易隐私方面的重要性。此外,专家们分享了各自的项目如何支持开发者和创业者,推动区块链技术的应用与发展。最后,会议鼓励与会者积极参与未来的区块链项目,推动金融包容性与技术创新。
295
0
0
2025-01-23 10:37
本文总结了完成clam合约和positions.sol合约的过程。首先,在fix.128.sol中定义了一个常量q128,用于在流动性计算中进行乘法和除法。接着,完成了positions.sol合约中的update函数,通过计算tokens.old的数量并更新相应的状态。随后,在clam合约中更新了fee growth的全局变量,并确保在流动性大于0时更新全局费用跟踪器。最后,成功编译了合约,标志着clam合约的代码和视频系列的完成。
472
0
0
2025-01-22 17:43
本视频介绍了如何在clam合约中实现费用计算功能,重点是完成getFeeGrowthInside函数。该函数通过输入参数(包括当前tick和全局费用变量)计算FeeGrowthInside0x128和FeeGrowthInside1x128。视频中详细讲解了如何获取上下tick的信息,并根据当前tick与上下tick的关系计算FeeGrowthBelow和FeeGrowthAbove,最终得出FeeGrowthInside的值。此外,还提到在使用Solidity 0.8版本时,需要特别处理溢出和下溢问题。最后,视频展示了如何在更新函数中初始化tick并编译合约。
483
0
0
2025-01-22 17:41
Ethereum虚拟机(EVM)是以太坊系统的核心,负责计算状态转变并处理交易。以太坊的世界状态包含所有账户、NFT、代币和DeFi信息,只有一个当前状态,随着每个新块的挖掘而更新。EVM通过处理交易中的操作码(opcodes)来计算新的世界状态,确保所有节点在处理相同交易时得到一致结果。EVM是一个虚拟机,抽象了底层硬件,允许在不同平台上运行。它使用Merkle Patricia树结构来存储账户信息,并通过栈和内存进行计算。EVM的设计确保了以太坊的去中心化和一致性,尽管它的计算能力受到每个块最大气体限制的约束。
648
0
0
2025-01-21 12:01
John Becker ,Chainalysis 的软件工程师,对以太坊虚拟机(EVM)及其内部智能合约设计模式进行了深入概述。他解释了 EVM 的结构,包括其基于堆栈的架构、内存管理,以及操作码和字节码在执行智能合约中的重要性。贝克强调了理解函数选择器、调用数据和合约执行的控制流的重要性。他还介绍了一些工具,如 Heimdall,用于反编译和分析合约,并讨论了 Solidity 如何编译为 EVM 字节码,使开发者能够有效地与合约进行交互。这次演讲为希望加深对 EVM 和智能合约开发知识的人提供了全面的指南。
583
0
0
2025-01-21 11:38
在本次演讲中,Gilbert介绍了以太坊虚拟机(EVM)及其操作码(opcodes),强调了理解这些内容对Solidity开发者的重要性。通过学习EVM操作码,开发者可以提高代码安全性,减少错误,并理解Solidity设计决策的基础。演讲涵盖了虚拟机的概念、EVM的结构(包括堆栈、内存和存储),以及如何将Solidity代码编译为操作码。此外,Gilbert还讨论了存储变量的索引、紧凑存储的优势以及内部和外部函数调用的区别。最后,他提到了一些学习资源和审计服务,鼓励开发者深入了解EVM和安全性。
567
0
0
2025-01-03 21:01
solidity实现NFT白名单
5368
0
0
2023-04-08 21:55
w3-1 详解 ERC20、ERC777、EIP20Permit 及 Permit2 等
1358
0
0
2023-03-22 10:04
理解 receive/fallback 及错误处理
4909
0
0
2023-03-17 10:03
W2-1理解 call 与 delegatecall 调用
1700
0
0
2023-03-15 09:04
30 错误处理函数
1812
0
0
2020-06-04 15:25
登链社区