区块链
文章平均质量分 74
区块链相关文章,包括区块链基础知识,以太坊智能合约开发,智能合约安全漏洞等。
StevenX5
区块链、以太坊、智能合约的技术学习与研究,国内外Web3项目应用场景的学习与研究。
展开
-
Truffle 开发入门
Truffle 是一个以太坊智能合约集成开发框架。Truffle 使用以太坊虚拟机(EVM)为区块链提供了世界级的开发环境、测试框架和资产管道,旨在让开发人员的工作更轻松。本文我们从一个 Truffle 官方示例入手,带你快速了解利用 Truffle 开发区块链项目的基础知识,包括 Truffle 项目的创建,智能合约的编译与部署,以及 Truffle 与智能合约进行交互实现区块链上的交易。原创 2023-01-06 08:32:26 · 1621 阅读 · 1 评论 -
以太坊智能合约开发:Solidity语言中的映射
本文我们介绍Solidity语言中的映射,包括映射的基本定义、语法、映射的变量声明和基本读写操作。并且通过两个智能合约例子演示了映射的定义与基本操作。原创 2022-12-19 11:01:40 · 1760 阅读 · 0 评论 -
以太坊智能合约开发:Solidity 语言中的数据类型
本文我们介绍Solidity语言的数据类型,重点是值类型,包括布尔类型、整型、地址类型、字节类型、字符串类型和枚举类型。并且通过两个智能合约例子,用于演示这些数据类型的声明与使用方法。原创 2022-12-04 21:35:38 · 1186 阅读 · 0 评论 -
以太坊智能合约开发:Solidity 语言快速入门
在本文中,我们从一个简单的智能合约样例出发,通过对智能合约源文件结构的剖析与介绍,使大家对Solidity语言有一个初步的认识。最后,我们将该智能合约样例在 Remix 合约编译器中编译、部署,观察其执行结果。原创 2022-11-21 17:03:10 · 2829 阅读 · 0 评论 -
用 Web3 以太坊接口连接与操作 MetaMask 开发指南
本文用一个例子,演示了如何使用 window.ethereum 对象连接并操作 MetaMask 钱包的方法。MetaMask 是一个浏览器插件钱包,支持火狐浏览器和谷歌浏览器。插件安装完成后,window 对象中会出现一个 window.ethereum 的对象。原创 2022-10-31 10:45:41 · 5027 阅读 · 2 评论 -
以太坊智能合约开发:Solidity语言中的构造函数
本文介绍了Solidity语言中的构造函数,包括构造函数的语法、继承构造函数的两种初始化方法。并且通过合约例子演示了构造函数的用法。原创 2022-10-24 12:20:36 · 2708 阅读 · 0 评论 -
以太坊智能合约开发:Solidity语言中变量的存储位置与作用域
在Solidity中,有一些数据类型是引用类型,如:数组(string和bytes是特殊的数组,也是引用类型)、结构体(struct)、映射(mapping)。在Solidity中使用引用类型的时候,必须指定数据的位置。在合约中声明的变量都有一个存储位置,用于指明变量的值存储在哪里。Solidity提供了三种类型的存储位置:storage、memory、calldata...原创 2022-08-04 11:56:39 · 2563 阅读 · 0 评论 -
Mythril 以太坊智能合约安全分析与检测工具详解(一)
Mythril是以太坊EVM字节码的安全分析工具,它使用符号执行、SMT方案来分析检测智能合约代码中的各种安全漏洞。本篇介绍了 Mythril 智能合约安全分析工具及其安装指南,并通过一个合约实例演示了该工具对 Solidity 合约源代码的检测命令及检测分析结果。原创 2022-04-18 20:54:19 · 4823 阅读 · 7 评论 -
以太坊智能合约安全漏洞之整数溢出漏洞的原理与解决方法
以太坊虚拟机 (EVM) 为整数指定固定大小的数据类型。这意味着一个整数变量,只能表示一定范围的数字。例如uint8 只能存储 [0,255] 范围内的数字。尝试将 256 存储到 uint8 将导致 0。如果不小心,用户输入未被检查,并且执行的计算结果超出了存储它们的数据类型的范围,那么 Solidity 中的变量可能会被利用。本文通过整数溢出漏洞原理的阐述,并结合 Solidity 智能合约实例代码的演示,介绍了一种智能合约整数溢出漏洞及其解决方法。原创 2022-04-30 18:14:53 · 3982 阅读 · 0 评论 -
智能合约安全之Solidity函数默认可见性漏洞
在 Solidity 中,函数有可见性类型,指示函数被允许如何被调用。可见性决定了函数是否可以由用户、其他派生合约、仅在内部或外部调用。函数默认为公共的,即允许用户或合约从外部调用它们。不正确地使用函数可见性可能会导致智能合约中的一些破坏性漏洞。本文通过 Solidity 函数默认可见性漏洞原理的阐述,并结合智能合约实例代码的演示,介绍了一种函数默认可见性漏洞的原理及其解决方法。原创 2022-05-09 20:23:13 · 1669 阅读 · 0 评论 -
以太坊Solidity智能合约安全之短地址或参数攻击漏洞的原理及预防
这个漏洞发生在第三方合约或应用程序调用智能合约时。当将参数传递给智能合约时,参数将根据 ABI 规范进行编码。第三方合约可以发送比预期参数长度短的编码参数。在这种情况下,EVM 将在编码参数的末尾填充 0,以弥补预期的长度。这样,当智能合约不验证输入时,这就会成为一个问题。最明显的例子是,当用户请求提款时,交易所不验证 ERC20 令牌的地址。本文介绍了以太坊Solidity智能合约的短地址/参数攻击漏洞原理、攻击方法和预防措施。原创 2022-05-19 17:11:47 · 1708 阅读 · 1 评论 -
智能合约安全漏洞之区块链的时间戳依赖漏洞与解决方法
时间戳依赖是指智能合约的执行依赖于当前区块的时间戳,如果时间戳不同,那么合约的执行结果也有差别。因此,如果在智能合约中不正确地使用区块时间戳,这将是非常危险的。本文通过对时间戳依赖漏洞原理的阐述,并结合 Solidity 智能合约实例代码的演示,介绍了一种区块链时间戳依赖漏洞及其解决方法。原创 2022-04-15 14:03:05 · 4939 阅读 · 0 评论 -
Solidity语言详解——函数和状态变量的可见性及Getter函数
本文内容包括 Solidity 语言的状态变量可见性、函数可见性和 Getter 函数。由于 Solidity 有两种函数调用(内部调用不会产生实际的 EVM 调用或称为“消息调用”,而外部调用则会产生一个 EVM 调用), 函数和状态变量有四种可见性类型。 函数可以指定为 `external` ,`public` ,`internal` 或者 `private`。 对于状态变量,不能设置为 `external` ,默认是 `internal` 。翻译 2022-04-21 14:31:34 · 1667 阅读 · 0 评论 -
以太坊智能合约基础——Solidity语言的计量单位和全局变量
本文重点介绍 Solidity 语言的计量单位和全局变量,包括以太币单位、时间单位、特殊变量和函数三个类别。其中大部分变量或函数会经常用于以太坊智能合约代码中。翻译 2022-04-12 10:26:38 · 1351 阅读 · 0 评论 -
Solidity语言详解——view和pure函数的使用区别
Solidity 语言有两类和状态读写有关的函数类型,一类是 view 函数(也称为视图函数),另一类是 pure 函数(也称为纯函数)。他们的区别是 view 函数不修改状态,pure 函数即不修改状态也不读取状态。翻译 2022-04-26 15:03:31 · 4528 阅读 · 0 评论 -
以太坊智能合约开发:Solidity语言中的哈希(hash)函数
在Solidity语言中,用于加密的哈希函数是一种算法,它将任意大小的数据作为输入,并生成固定大小(32个字节)的加密文本。即使输入的微小变化也会产生完全不同的输出。Solidity提供以下几种加密函数:keccak256、sha256、ripemd160、ecrecover。以太坊使用keccak进行哈希计算,这与SHA_256类似但不相同。...原创 2022-07-10 12:12:57 · 3989 阅读 · 0 评论 -
智能合约Solidity语言错误处理函数(require、revert、assert)使用详解
本文介绍了以太坊智能合约Solidity语言中的错误处理及异常,包括有哪些错误处理函数(require、revert、assert)、这些函数之间的共同点和差异化比较。并且通过两个合约例子演示了错误处理函数的用法。...原创 2022-06-29 19:09:25 · 4025 阅读 · 0 评论 -
以太坊Solidity语言的Receive函数和Fallback回退函数详解
Solidity语言中关于回退函数的定义:Receive是一个接收以太币函数,一个合约中最多可以有一个 函数。在对合约转账时会执行 函数,例如通过 、 或 。如果 函数不存在,那么 回退函数会被调用。 函数的声明语法如下:Receive函数没有 关键字,没有参数也没有返回值,且必须是 可见性(允许外部合约调用)并具有 可支付属性。回退函数的声明语法如下:其中:Fallback函数与Receive函数的区别是:Receive函数只在合约转账时调用,而Fallback函数除了可以在合约转账时调原创 2022-06-26 16:33:38 · 5987 阅读 · 0 评论 -
区块链DAPP安全标准的一些建议
本文的目的是强调安全问题,并为 DApp 开发人员提供必要的信息,以安全地启动他们的项目或减轻可能发生的任何问题。没有什么是绝对安全的。没有单一的通用方法足以确保软件安全。系统必须依赖多种安全增强方法。安全性增强实践应用越多越好。原创 2022-05-12 16:07:57 · 1229 阅读 · 0 评论