在探讨以太坊这一复杂的区块链平台时,我们经常会遇到各种技术术语。“键值”(Key-Value)便是其中之一,它不仅仅是一种数据结构,更是以太坊,特别是其智能合约中数据存储的核心概念,理解以太坊中的“键值”含义,对于深入把握以太坊的工作原理、智能合约的开发以及区块链数据的组织方式至关重要。
“键值”的基本概念:从计算机科学到以太坊
在计算机科学领域,“键值”(Key-Value)是一种最基本的数据结构,通常被称为“键值存储”或“字典”、“哈希表”,它由两部分组成:
- 键(Key):一个唯一的标识符,类似于字典中的单词或索引,它用于快速定位和访问数据。
- 值(Value):与键关联的实际数据,类似于字典中单词的解释或索引指向的内容。
就是通过一个“键”来查找和存储对应的“值”。{"name": "Alice", "age": 30} 中,"name" 和 "age" 是键,"Alice" 和 30 是它们各自的值。
以太坊中的“键值”:状态存储的核心
以太坊作为一个全球共享的计算机,其核心功能之一是维护一个状态数据库,记录所有账户(外部账户和合约账户)的状态变化,智能合约的状态变量,本质上就是存储在以太坊区块链上的“键值”对。
-
存储位置:Storage 在以太坊智能合约中,变量有不同的存储位置,如
storage、memory、calldata。storage是指永久存储在区块链上的数据,它是以“键值”的形式组织的,当你部署一个智能合约,或者调用合约函数并修改了状态变量时,这些修改都会被记录在合约的storage中,形成新的“键值”对或更新现有“键值”对的值。 -
键值的生成与结构 以太坊中
storage的键值对并不是随意设置的,键通常是根据状态变量在合约中的声明顺序、变量类型、以及可能的偏移量等计算出来的一个哈希值或索引,这个键是确定性的,即对于同一个合约的同一个状态变量,其键是固定不变的,值则是你实际存储的数据,例如地址、整数、字符串、数组或映射等复杂类型(复杂类型本身也会被序列化后存储)。一个简单的合约:
contract SimpleStorage { uint256 public number; string public text; }








