- 浏览: 761702 次
- 性别:
- 来自: 深圳
文章分类
- 全部博客 (1045)
- 数据结构 (36)
- UML与设计模式 (42)
- c++ (87)
- rust (36)
- Qt (41)
- boost模板元编程 (43)
- Linux (77)
- 汇编 (4)
- 其它 (2)
- 烹饪 (3)
- unix c / socket (73)
- 软件工程 (4)
- shell (53)
- Python (37)
- c++ primer 5th(c++11) (22)
- 数据库/MySQL (27)
- 数据存储 (4)
- lisp (7)
- git (4)
- Utility (3)
- CDN与DNS (54)
- Http (53)
- php (7)
- nginx/lua/openresty (41)
- redis (11)
- TCP/IP (16)
- 互联网 (6)
- kernel (2)
- go (34)
- 区块链 (43)
- 比特股 (13)
- 以太坊 (23)
- 比特币 (23)
- 密码学 (10)
- EOS (53)
- DAG (1)
- docker (1)
- filecoin (7)
- solidity (65)
- ipfs (8)
- 零知识证明 (1)
- openzeppelin (3)
- java (1)
- defi (7)
- Ton (0)
最新评论
库类似于合约,但主要作用是代码重用。库中包含了可以被合约调用的函数。
Solidity中,对库的使用有一定的限制。以下是库的主要特征。
如果库函数不修改状态,则可以直接调用它们。这意味着纯函数或视图函数只能从库外部调用。
库不能被销毁,因为它被认为是无状态的。
库不能有状态变量。
库不能继承任何其他元素。
库不能被继承。
using A for B指令,可用于将库A的函数附加到给定类型B。这些函数将把调用者类型作为第一个参数(使用self标识)。
Solidity中,对库的使用有一定的限制。以下是库的主要特征。
如果库函数不修改状态,则可以直接调用它们。这意味着纯函数或视图函数只能从库外部调用。
库不能被销毁,因为它被认为是无状态的。
库不能有状态变量。
库不能继承任何其他元素。
库不能被继承。
pragma solidity ^0.5.0; library Search { function indexOf(uint[] storage self, uint value) public view returns (uint) { for (uint i = 0; i < self.length; i++) if (self[i] == value) return i; return uint(-1); } } contract Test { uint[] data; constructor() public { data.push(1); data.push(2); data.push(3); data.push(4); data.push(5); } function isValuePresent() external view returns(uint){ uint value = 4; // 使用库函数搜索数组中是否存在值 uint index = Search.indexOf(data, value); return index; } }
using A for B指令,可用于将库A的函数附加到给定类型B。这些函数将把调用者类型作为第一个参数(使用self标识)。
pragma solidity ^0.5.0; library Search { function indexOf(uint[] storage self, uint value) public view returns (uint) { for (uint i = 0; i < self.length; i++)if (self[i] == value) return i; return uint(-1); } } contract Test { using Search for uint[]; uint[] data; constructor() public { data.push(1); data.push(2); data.push(3); data.push(4); data.push(5); } function isValuePresent() external view returns(uint){ uint value = 4; // data 表示库 uint index = data.indexOf(value); return index; } }
发表评论
-
TypeError:ethers_1.getAddress
2024-04-29 10:45 237package.json 添加:"@nomicfou ... -
solidity
2023-02-25 14:23 12一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 11一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
solidity
2023-02-25 14:23 244一.solidity 1.EVM 不是基于寄存器的,而是基于栈 ... -
Address
2023-02-23 10:54 5// contracts/Box.sol // SPDX ... -
Address
2023-02-23 10:50 207// contracts/Box.sol // SPDX ... -
Beacon
2023-02-20 11:45 220Beacon a.Implementation地址并不存放在P ... -
UUPS
2023-02-17 16:16 252a.Proxy直接把所有的请求都通过delegatecall丢 ... -
Transparent
2023-02-16 15:44 203Transparent: a.如果Proxy合约发现自己被Pr ... -
string转bytes
2023-02-16 11:04 278const data = Buffer.from(''); ... -
hardhat命令
2023-02-13 09:58 3321.前置准备,运行一个新项目 mkdir my-project ... -
multicall
2023-01-31 20:11 200multicall的solidity调用与ethers.js调 ... -
检查是否是721
2023-01-31 15:18 153// SPDX-License-Identifier: M ... -
EVM操作码
2023-01-25 10:33 2902.栈和内存操作码 2.1 POP:取出栈顶元素 2.2 PU ... -
计算合约地址
2023-01-19 11:27 242EVM会根据发送者地址和nonce经过RLP编码后再进行kec ... -
标准修饰符
2023-01-18 17:03 1541.internal:类似c++中的protected,通过J ... -
ABI编码函数
2023-01-17 10:40 3011. abi.encode()returns(bytes):对 ... -
数据位置
2023-01-17 10:24 1751.函数参数包括返回的参数默认是memory 2.局部变量默认 ... -
随机数
2023-01-17 10:06 194https://www.paradigm.xyz/2023/0 ... -
extcodesize
2023-01-16 11:16 282extcodesize取出的byte code长度,若长度大于 ...
相关推荐
Solidity库的集合,最初侧重于数组。 文档是从Natspec生成的。 快速开始 npm install --save cryptofin-solidity 在项目中使用 import "cryptofin-solidity/contracts/array-utils/AddressArrayUtils.sol"; contract...
uniswap-lib 在Uniswap合同之间共享的Solidity库。 该软件包着眼于安全性和执行气体效率。安装运行yarn安装依赖项。测试运行yarn test执行测试套件。用法通过yarn add @uniswap/lib安装在另一个项目中然后通过...
"Ownable.sol"和"Context.sol"是常见的Solidity库,用于管理合约所有权和提供执行上下文。"Ownable"合约通常用于设定合约初始所有者,并提供了转移所有权的机制。"Context"合约则提供了一个无状态的基类,方便其他...
标准库应提供Solidity库/函数,以执行常见任务,例如使用字符串,位和其他常见类型,以及使用以太坊和以太坊相关技术,例如Patricia Tries。 配套 这些是不同的程序包。 位 bits包用于处理位域(uint)。 合约 位 ...
solidity-sigutils 一个用于验证以太坊消息多重签名的实体库。 这些实用程序使与基于和以太坊签名消息进行交互变得简单。 它们是Cleargraph的开放式和分散式身份系统的基础,并且可以在分散式应用程序中用于许多其他...
5. Solidity版本:文件提到Solidity 4和Solidity 5,这表明文档涵盖了不同版本的Solidity语言特性和更新。Solidity语言随时间发展,不同版本可能会引入新特性和改进,也可能更改或弃用某些功能。 6. 编程语言和框架...
因此,开发者需要了解如何在Solidity中实现字符串拼接,这通常涉及到字节和字符串之间的转换以及有时借助第三方库。 首先,我们需要明确Solidity中字符串的处理方式。在早期版本的Solidity(0.4.x及之前),字符串...
总之,UnorderedKeySet是一个Solidity库,专为以太坊智能合约设计,用于高效地管理无序的键值集合,支持基本的CRUD操作。它的应用将提升合约的存储管理效率,对于构建复杂的智能合约系统来说,是一个非常有价值的...
Solidity develop 文档(开发版) Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript...Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。
《Solidity 中文文档》是针对智能合约编程语言 Solidity 的一份详尽指南,它为开发者提供了学习和理解 Solidity 的关键知识点。Solidity 是以太坊区块链平台上的主要编程语言,用于编写智能合约,这些合约是自动执行...
Solidity的库使用特殊的调用保护来防止意外的重入攻击。 ### ABI编码函数 应用二进制接口(ABI)用于合约之间的函数调用编码。 ### 错误处理 Solidity提供了多种错误处理方式,例如throw和require语句。 ### 事件...
你还将深入理解Solidity语言的关键概念,如合约的生命周期、状态变量、函数修饰符(如`public`、`internal`、`private`)、继承、库、事件和错误处理。 文档将首先介绍以太坊的生态系统,包括以太坊虚拟机(EVM)、...
此外,库(library)提供了一种复用代码的方法,它可以在多个合约之间共享功能,但不消耗合约的存储空间。 **8. 排序与随机性** 由于区块链的确定性特性,Solidity不直接支持真正的随机数。然而,可以利用外部的...
VSCode中的solidity插件,版本号0.0.135 由于最新版本(0.0.165)的插件会导致引用OpenZeppelin的时候出现如下报错: Expected string literal (path), "*" or alias list. 或者 Source "@openzeppelin/contracts/...
前端开源库-solidity-sha3solidity-sha3,javascript中的solidity sha3
1. Solidity语言介绍: - Solidity是一种面向区块链、特别是以太坊平台的编程语言。 - 它的语法类似于JavaScript,易于熟悉和上手。 - Solidity被设计用于编写智能合约,即在以太坊虚拟机(EVM)上运行的程序。 ...
它的语法类似于JavaScript,但增加了许多面向智能合约的特性,如继承、库、自定义错误和事件等。开发者可以利用Solidity编写智能合约,这些合约一旦部署到以太坊网络,就能在去中心化的环境中执行预定的逻辑。 ...
IntelliJ IDEA的Solidity插件intellij-solidity极大地提升了以太坊智能合约的开发体验,不仅提供了丰富的代码辅助功能,还集成了测试和调试工具,使得开发者能够在熟悉的环境中高效地进行区块链应用开发。...
在进行离线开发时,你可能需要预先下载所有依赖的Solidity库和其他npm模块,确保在没有网络连接时也能正确编译和运行智能合约。同时,如果要部署到以太坊网络,需确保已经拥有足够的以太币来支付gas费用,并提前知道...
Solidity develop 文档(稳定版) Solidity 是一门面向合约的、为实现智能合约而创建的高级编程语言。这门语言受到了 C++,Python 和 Javascript...Solidity 是静态类型语言,支持继承、库和复杂的用户定义类型等特性。