
A Web3 Security Tutorial: F04.以太坊模型详解
以太坊模型详解有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewa 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security1 数据层1.1 账户和账户地址1.1.1 账户外部账户:由私钥控制; 合约账户:由代码控制; 每个账户都是由一个160位的地址组成,对应的账户中的状态包含余额(balance)、交易次数(nonce)及合约账户中的code(代码)、存储(stroge)。以下为合约账户的具体属性:nonce 已执行交易总数,用来标识该账户发出的交易数量;对于外部账户EOA,该值代表发送过的交易数量,序号从0开始递增;对于合约账户,该 值代表其创建的合约数量,序号从1开始递增;balance 持币数量,记录用户的以太币余额;storage hash 存储区的哈希值,指向智能合约账户的存储数据区;code hash 代码区的哈希值,指向智能合约账户存储的智能合约代码。Account Type1.1.2 账户地址外部账户地址EOA生成256 位随机数作为私...

A Web3 Security Tutorial: F04.以太坊模型详解
以太坊模型详解有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewa 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security1 数据层1.1 账户和账户地址1.1.1 账户外部账户:由私钥控制; 合约账户:由代码控制; 每个账户都是由一个160位的地址组成,对应的账户中的状态包含余额(balance)、交易次数(nonce)及合约账户中的code(代码)、存储(stroge)。以下为合约账户的具体属性:nonce 已执行交易总数,用来标识该账户发出的交易数量;对于外部账户EOA,该值代表发送过的交易数量,序号从0开始递增;对于合约账户,该 值代表其创建的合约数量,序号从1开始递增;balance 持币数量,记录用户的以太币余额;storage hash 存储区的哈希值,指向智能合约账户的存储数据区;code hash 代码区的哈希值,指向智能合约账户存储的智能合约代码。Account Type1.1.2 账户地址外部账户地址EOA生成256 位随机数作为私...

A Web3 Security Tutorial: F03.比特币模型详解
有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewai 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security1 数据层区块链是由Hash指针链接的单向链表。这个链表连接一系列的区块,每个区块包含数据和指向前一区块的指针。区块链中,前一个区块指针使用哈希指针替代了传统指针,因此每个区块不止告知了前一个区块的位置,也提供一个哈希值保证了前一个区块的所有内容。 下面是区块链中区块的基本结构:区块结构其中最重要的部分是Blockheader、Transactions,下面将会对其进行分别介绍:1.1 Blockheader区块头结构1.1.1 Merkle tree root Merkle tree是一种哈希二叉树(即用Hash指针代替了普通指针),它是一种用作快速归纳和校验大规模数据完整性的数据结构。它被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹。Merkle Tree涉及到的相关概念如下:Merkle proof:判断某交易是否属于Mer...

A Web3 Security Tutorial: F03.比特币模型详解
有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewai 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security1 数据层区块链是由Hash指针链接的单向链表。这个链表连接一系列的区块,每个区块包含数据和指向前一区块的指针。区块链中,前一个区块指针使用哈希指针替代了传统指针,因此每个区块不止告知了前一个区块的位置,也提供一个哈希值保证了前一个区块的所有内容。 下面是区块链中区块的基本结构:区块结构其中最重要的部分是Blockheader、Transactions,下面将会对其进行分别介绍:1.1 Blockheader区块头结构1.1.1 Merkle tree root Merkle tree是一种哈希二叉树(即用Hash指针代替了普通指针),它是一种用作快速归纳和校验大规模数据完整性的数据结构。它被用来归纳一个区块中的所有交易,同时生成整个交易集合的数字指纹。Merkle Tree涉及到的相关概念如下:Merkle proof:判断某交易是否属于Mer...

A Web3 Security Tutorial: F02.区块链通用模型
有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewai 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security区块链的通用模型中,一般有两种描述区块链技术的方法。一种是从区块链架构的工作原理去描述,通常为五层架构模型;另一种是从区块链网络协议的角度去描述,一般分为四层协议。下面分别介绍。区块链分层架构通常区块链架构由五层组成:硬件层、数据层、网络层、共识层和应用层。区块链5层架构下面我们对每一层进行简单介绍:硬件(基础设施)层(Hardware/Infrasturcture Layer)区块链的第一层由硬件组成,如网络连接、网络中的计算机和数据服务器。存储在区块链中的数据由数据服务器托管,区块链网络上的计算机可以相互共享这些数据 。这导致创建 P2P 网络,其中信息由网络上的各个节点(或计算机)验证。数据层(Data Layer)数据层上,存放着区块链上所有的数据信息,是整个区块链技术中最底层的数据结构。从没有记录交易的创世区块起,到不断新增区块,构成的...

A Web3 Security Tutorial: F02.区块链通用模型
有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewai 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security区块链的通用模型中,一般有两种描述区块链技术的方法。一种是从区块链架构的工作原理去描述,通常为五层架构模型;另一种是从区块链网络协议的角度去描述,一般分为四层协议。下面分别介绍。区块链分层架构通常区块链架构由五层组成:硬件层、数据层、网络层、共识层和应用层。区块链5层架构下面我们对每一层进行简单介绍:硬件(基础设施)层(Hardware/Infrasturcture Layer)区块链的第一层由硬件组成,如网络连接、网络中的计算机和数据服务器。存储在区块链中的数据由数据服务器托管,区块链网络上的计算机可以相互共享这些数据 。这导致创建 P2P 网络,其中信息由网络上的各个节点(或计算机)验证。数据层(Data Layer)数据层上,存放着区块链上所有的数据信息,是整个区块链技术中最底层的数据结构。从没有记录交易的创世区块起,到不断新增区块,构成的...

A Web3 Security Tutorial: F01.什么是区块链
什么是区块链有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewai 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security概念公认的最早关于区块链的描述性文献是中本聪所撰写的 《比特币:一种点对点的电子现金系统》 ,但该文献重点在于讨论比特币系统,并没有明确提出区块链的术语。在其中,区块和链被描述为用于记录比特币交易账目历史的数据结构。 在Wikipedia上,将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构进行持续增长的、不可篡改的数据记录。在百度百科上,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,作为比特币底层技术的区块链技术,因为比特币而被广泛认知。 这里我们从狭义和广义两个层面来理解区块链的概念: 狭义的区块链技术是一种按照时间顺序将数据区块以链表的方式组合成特定数据结构,并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账,能够安全存储简单的、有先后关系的、在系统内可验证的数据。 广...

A Web3 Security Tutorial: F01.什么是区块链
什么是区块链有人说,Web3就像《三体》中的“黑暗森林”,那么该课程将带你进入“猎人”的门。 Twitter: @brycewai 所有代码和教程开源在Github: https://github.com/brycewai/Web3-Security概念公认的最早关于区块链的描述性文献是中本聪所撰写的 《比特币:一种点对点的电子现金系统》 ,但该文献重点在于讨论比特币系统,并没有明确提出区块链的术语。在其中,区块和链被描述为用于记录比特币交易账目历史的数据结构。 在Wikipedia上,将区块链类比为一种分布式数据库技术,通过维护数据块的链式结构进行持续增长的、不可篡改的数据记录。在百度百科上,区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链,作为比特币底层技术的区块链技术,因为比特币而被广泛认知。 这里我们从狭义和广义两个层面来理解区块链的概念: 狭义的区块链技术是一种按照时间顺序将数据区块以链表的方式组合成特定数据结构,并以密码学方式保证的不可篡改和不可伪造的去中心化共享总账,能够安全存储简单的、有先后关系的、在系统内可验证的数据。 广...

Move语言安全分析
随着新公链 Aptos、Sui 的崛起,Move 作为面向资产编程的语言也吸引了越来越多的关注,相关公链上使用Move语言编写的项目也越来越多。Beosin安全研究团队对Move语言进行了深入研究,本文就将从安全角度去介绍这一智能合约语言新贵——Move。 在本文中,我们首先将深入探讨Move语言的特性,再从安全角度去介绍Move的设计,然后将通过Move与solidity的比较来进一步加深大家对Move的理解,最后我们将介绍我们研究团队总结的Move项目可能出现的安全漏洞点和对应的审计点,为使用 Move 的项目方保驾护航。1. 基础概念move 语言最初是由 Facebook 团队为 Diem(原名Libra)区块链而设计开发的一门新语言。而 Libra 的使命是打造一个简单的全球货币和金融基础设施,为数十亿人提供支持。Move 语言旨在提供一个安全、可编程的基础,可以在此基础上构建这一愿景。Move 必须能够以精确、可理解和可验证的方式表达 Diem 货币和治理规则。 从长远来看,Move 必须能够对构成金融基础设施的各种资产和相应的业务逻辑进行编码。 那么,如何实现这一愿...

Move语言安全分析
随着新公链 Aptos、Sui 的崛起,Move 作为面向资产编程的语言也吸引了越来越多的关注,相关公链上使用Move语言编写的项目也越来越多。Beosin安全研究团队对Move语言进行了深入研究,本文就将从安全角度去介绍这一智能合约语言新贵——Move。 在本文中,我们首先将深入探讨Move语言的特性,再从安全角度去介绍Move的设计,然后将通过Move与solidity的比较来进一步加深大家对Move的理解,最后我们将介绍我们研究团队总结的Move项目可能出现的安全漏洞点和对应的审计点,为使用 Move 的项目方保驾护航。1. 基础概念move 语言最初是由 Facebook 团队为 Diem(原名Libra)区块链而设计开发的一门新语言。而 Libra 的使命是打造一个简单的全球货币和金融基础设施,为数十亿人提供支持。Move 语言旨在提供一个安全、可编程的基础,可以在此基础上构建这一愿景。Move 必须能够以精确、可理解和可验证的方式表达 Diem 货币和治理规则。 从长远来看,Move 必须能够对构成金融基础设施的各种资产和相应的业务逻辑进行编码。 那么,如何实现这一愿...