前言
在以太坊上,我们可以通过部署智能合约来实现我们需要的功能,合约代码中我们往往需要定义一些变量,这就涉及到了智能合约变量的存储机制。这篇文章我们将根据solidity的所有的变量命名的类型来讲解智能合约的存储机制。存储机制
每个在以太坊虚拟机中运行的智能合约的状态都在链上永久地存储着。这些值存储在一个巨大的数组中,数组的长度为2^256,下标从零开始且每一个数组能够储存32字节(256个比特)长度的值。并且存储是稀疏的,并没有那么密集。变量类型
Solidity的数据变量类型分为两类:值类型-valuetype引用类型-referencetype值类型布尔型(bool)2bit(0/1)整型(int/uint)根据关键字的不同表示不同长度,int8表示8bits有符号数定长浮点型(fixed/ufixed)Solidity还没有完全支持定长浮点型。可以声明定长浮点型的变量,但不能给它们赋值或把它们赋值给其他变量定长字节数组(byte/bytes)定义数组时定义长度地址类型(adress)160bits地址类型成员变量(balance,transfer....)balanceuint256(256bits)transfer()uint256(256bits)引用类型不定长字节数组类型(bytes/byte,string,uint....)结构体(struct)映射(mapping)简单分析
Trustless Market开发团队将Uniswap的智能合约部署到比特币网络上:5月11日消息,一群开发人员已将Uniswap的智能合约部署到比特币网络上,以利用BRC-20代币的兴起并开发去中心化金融 (DeFi) 生态系统。该协议称为Trustless Market,日交易量已达50万美元,吸引了2000多名用户,并让流动性提供者从网络上进行的所有swap交易中获得2%的佣金。[2023/5/11 14:57:31]
写一个简单值类型的合约pragmasolidity^0
优化存储原则:如果下一个变量长度和上一个变量长度加起来不超过256bits,它们就会存储在同一个插槽里。
总结
本篇文章详细讲解了智能合约的优化存储原则,数组类型,字符串类型,结构体类型和映射类型的存储机制。同时提供了基于python的计算代码,用以验证机制分析的正确性。当然,本文设计的智能合约设计并不复杂,在实际开发过程中远比此复杂,需要经历一些分析,在能找到正确的存储位置。最后,希望通过本文章可以帮助大家进一步的了解智能合约。
人们在不知道潜在风险的情况下参与DeFi传奇!去中心化金融,俗称“DeFi”,旨在颠覆传统金融机构,如银行、加密货币交易所,其中大多数都运行在以太坊区块链上.
1900/1/1 0:00:00注:原作者为ArthurHayes,以下是全文编译。 采用NFT技术并在公共区块链上托管的数字艺术品,引发了关于“什么是艺术,什么是垃圾?”这一问题的最新讨论.
1900/1/1 0:00:00头条IMF:健全的加密资产监管框架必须成为全球政策议程的优先事项国际货币基金组织10月12日在报告中警告称,加密货币的快速增长给投资者和政策制定者带来了一些风险,“稳定币”.
1900/1/1 0:00:00作者:SpencerApplebaum这篇文章是《Layers1和Layer2的价值捕获》的续作。它也建立在《分叉DeFi协议》的一些想法之上.
1900/1/1 0:00:00Univ3LP的头寸可以分解为看跌收益和范围组件。Univ3头寸的值是以下两项的和:1)空头头寸的总和,其值由Black-Scholes模型给;2)范围项,其闭合表达式由Feynman-Kac公.
1900/1/1 0:00:00随着DeFi的大爆发,以以太坊为首的许多公链生态都在繁荣发展,也有部分公链成立数亿美元的基金发展生态,以确保社群的活跃程度.
1900/1/1 0:00:00