关于OPE
OPE 讴谱讴谱目标:O-P-EO: Optimization-优化
优化一个新体系p: Purification-净化
除去恶方面E: Evolution-进化
提升和扩大体系功能
五共思想共识:学区块链的第一步就是了解比特币以太坊,比特币的共识是POW,由于少数人可以控制节点权力,到以太坊所使用的共识就改进为POS,而我现在正在研究Solana的底层协议,它又是采用POH共识,通过历史时间证明,加快了交易的执行,是性能的优化。所以共识就是在不断发展,不断优化,符合大部分人的利益所认同的所接受的。OPE中提供就是按贡献分配这个共识,我就觉得有点和比特币POW有点相似,你做有效事的越多,你就收获的越多。
共创:打破垄断,一起创作,合作。在OPE世界中,是优缺互补,一起发挥各自的价值做好一件事
共生:我感觉就是没有竞争,互惠共利,比如现在的外卖大战,以前的购物平台纷纷宣布投入外卖市场,各家都拿出最大的优惠来竞争,如果各家都能拿出自己的资源,共同友好发展,就能实现利益最大化,不就是达到了一个共生的理念。
共治:现在社会都是上级传达命令,我们需要去服从命令,在OPE中的逻辑强调的事议定和 ...
sherlock-S-locker System
sherlock-S-locker System升级合同,常量发生改变现有正式合约中的 DOWNSCALER 为 1e16,而提议升级的合约中 DOWNSCALER 为 1e18,两者不一致,导致以下影响:
升级合约后新加入的质押者,在 lockedStakedBalance 相同的情况下,所获得的单位数(units)明显少于老质押者,分配收益时不公平。
升级合约后,如果已有质押者追加较少(少于100倍)的质押金额,其单位数反而会减少,获得的税收分成变少。
质押者可能会提前操作,在合约升级前抢先质押,以获得更多单位数并获取更大的税收分成。
抢跑攻击,在知晓分配收益时,扩大自己的份额,获取更多的收益在解锁获得惩罚金时,攻击者提前知道,然后通过提供流动性或者质押金额,去分配获益
某个用户准备进行立即解锁(instant unlock)。
恶意的 Locker 拥有者在此之前增加自己的流动性或质押额度。
_instantUnlock 被调用,惩罚金被分配给当前的 LP 和质押者。
恶意 Locker 拥有者因持有单位(units)而获得部分惩罚金收益。
获取收益后,立即撤 ...
sherlock-DODO Cross-Chain DEX
sherlock-DODO Cross-Chain DEX参数没有校验,用户可以伪造ZEVM 合约中的 onCall() 函数接收来自Gateway的 token 和 amount,但没有验证解码后的 MixSwapParams 是否与这些值一致。
具体来说:
params.fromToken 完全由用户传入消息决定
params.fromTokenAmount 也是用户可控的
因此攻击者可以:
通过桥接发送一小笔任意代币(如 1 DAI)
在消息中伪造一个大额的 swap 请求,比如用合约中持有的大额WZETA来兑换 USDC
实际 swap 时使用的是合约自己持有的 WZETA
攻击者获得兑换后的 USDC,而合约的 WZETA 被盗
这会导致攻击者可以完全清空合约中持有的高价值代币。
参数没有校验如果发生转移的是原生代币,实际上是没有校验数量是不是准确的
function withdrawToNativeChain( address zrc20, uint256 amount, bytes calldata message) external payab ...
单机版区块链的实现
单机版区块链的实现全部代码都已开源在git上 hyblockchain
前置知识开始之前,首先要了解一些基础知识,这里简单的介绍一下
区块链的结构区块(Block)包含:区块头(Block Header):包含前一个区块哈希、Merkle 根、时间戳、随机数等交易列表(Transactions):每个区块中打包的所有交易链(Chain):每个区块通过 previousHash 指向前一个区块形成链
哈希函数作用:确保数据完整性、防篡改常用:SHA256(Bitcoin)、Keccak256(Ethereum)本实验使用的是SHA256
交易系统
交易结构(Transaction)
发送方地址、接收方地址、金额、签名(可选)
交易池(Mempool):待打包的交易集合
简单账户模型或UTXO模型
账户模型(如 Ethereum):记录每个地址的余额
UTXO 模型(如 Bitcoin):每个未花费输出作为新交易输入
状态树 MPT使用的是key,value来实现
叶子节点:实际存放值的节点分支节点:有16个子节点,用来指向多条路径扩展节点:存储公共前缀,它的下一节点只能是分 ...
sherlock-Usual ETH0
sherlock-Usual ETH0这是一个关于代币质押与兑换的合约
移除某些质押代币后,导致某些函数功能不能使用因为某些函数(swap等)利用的数组来实现历遍质押代币,有些条件判断了质押代币不能为零,如果某些代币被移除后,那么整个函数就会被revert.
精度的问题,四舍五入,向下取整,多层函数实现的向下取整后,又作为分母,导致差值越来越大建议给分母加一消除向下取整
function wadTokenAmountForPrice(uint256 wadStableAmount, uint256 wadPrice, uint8 tokenDecimals) internal pure returns (uint256){+ return Math.mulDiv(wadStableAmount, 10 ** tokenDecimals, wadPrice + 1, Math.Rounding.Floor);- return Math.mulDiv(wadStableAmount, 10 ** tokenDecimals, wadPrice, Ma ...
sherlock-LEND
sherlock-LEND这是一个关于跨链的借贷,那么漏洞点就是在跨链的处理上
高gas费用阻碍从边界用户退出质押原因就是使用数组记录数据,并且没有限制,导致gas线性增加,用户支付不了,退出质押代码漏洞
// 遍历数组确定相关层级变更区间 for (uint256 i = 0; i < userTierHistory.length; i++) { if (userTierHistory[i].timestamp <= fromTime) { currentTier = userTierHistory[i].to; relevantStartIndex = i; } else { break; } } // 计算区间内各层级的利息 for (uint256 i = relevantStartIndex + 1; i < userTierHistory.length; i++) { if (userT ...
使用 Anchor 与 SPL Token Program 交互指南
使用Anchor与SPL Token Program交互指南Anchor 是用来开发 Solana 智能合约的高层开发框架,它基于 Rust,简化了 Solana 原生开发的繁琐流程。SPL 是 Solana Program Library 的缩写,它是Solana官方维护的一套标准智能合约程序集合,用来为 Solana 生态提供各种 基础功能模块,类似于以太坊里的 ERC标准合约。
创建Token Mint首先要了解什么是Mint账户,简单来说,Mint 账户就是某个代币的“发行登记中心”,负责记录这个代币的总发行量、精度、小数位,以及谁有权限铸造(mint)或销毁(burn)它,所以它的结构就非常的清晰了,如下:
pub struct Mint { /// 用于铸造新token的可选权限。mint权限只能在mint创建期间提供。 /// 如果没有mint权限,则mint具有固定的供应量,并且无法铸造更多的token。 pub mint_authority: COption<Pubkey>, /// token的总供应量。 ...
code4rena-Kinetiq
高 缓冲区达到最大限额,取消资金大于合约的资金质押协议允许用户质押代币并赚取奖励。当用户希望提取他们的代币时,他们会调用 queueWithdrawal() 来启动提取流程。管理者可以通过调用 cancelWithdrawal() 来取消待处理的提取请求,这会将 KHYPE 代币返还给用户。为了正确完成取消流程,管理者必须调用 redelegateWithdrawnHYPE() 来更新协议状态,包括缓冲区和其他操作。然而,存在一个限制:一旦达到缓冲区阈值,代币会从 EVM 层移动到 L1 spot 余额,但redelegateWithdrawnHYPE()要求 address(this).balance >= cancelledWithdrawalAmount。由于这些转移的资产在合约层面不再可访问,但仍然计入已取消的提取金额中,因此该条件在数学上变得不可能满足。尽管有概念验证(POC),但让我举个例子:质押管理器合约的目标缓冲区为 3 HYPE。Alice、Bob、Sage 和 Tony 各质押了 1 HYPE,这自动达到了目标缓冲区,剩余部分将进入 L1 spot 余额。从 ...
EIP712
EIP712当然!EIP-712 是以太坊的一项标准,它定义了一个结构化的消息签名方案,以便能够安全、标准化地对复杂数据进行签名和验证。简单来说,它是一个用于签名复杂数据结构(如结构化对象、数组、嵌套对象等)并保证其不可篡改的标准。
🌟 EIP-712 概述EIP-712 规范提出了对结构化数据进行签名的方法,解决了以下问题:
避免重放攻击:如果没有结构化数据的签名,可能存在相同的签名被滥用的风险。
易于解析和验证:签名的对象可以被预先约定和验证,避免直接签名原始字节流。
提升用户体验:用户可以明确知道自己签署的内容,减少误签和恶意签名的风险。
🔍 EIP-712 的核心概念EIP-712 通过将数据分为两部分来创建安全的签名:
Domain Separator(域分隔符):标识签名数据的来源。通过引入这个“域”概念,可以区分不同的签名场景,防止重放攻击。例如,一个签名用于交易,另一个用于账户管理,它们的域分隔符是不同的,彼此之间互不干扰。
类型哈希:对数据结构的类型进行哈希,确保签名的数据结构不被篡改。
数据结构:EIP-712 签名的数据本身是结构化的,数据包括了 t ...
跨链合约时代:Axelar、Wormhole、Hyperlane 谁能称霸多链通信?
跨链合约时代:Axelar、Wormhole、Hyperlane 谁能称霸多链通信?随着区块链技术的快速发展,跨链通信已经成为了区块链生态系统中的重要组成部分。跨链协议允许不同的区块链之间进行信息传递和资产互操作,从而打破了各个链之间的孤立局面。Axelar、Wormhole 和 Hyperlane 作为三大跨链协议的代表,它们在多链通信的实现上各具特色。那么,谁能称霸跨链合约时代,成为未来的多链通信标准呢?
一、跨链协议的背景随着区块链的多样化发展,去中心化金融(DeFi)、NFT、游戏和其他应用程序已经不再局限于单一链上运行。不同区块链之间的数据和资产流通需求日益增加。然而,不同链之间缺乏统一的通信协议,导致了跨链操作的复杂性和不兼容性。因此,跨链协议应运而生,它们旨在提供链与链之间的高效、安全和可扩展的通信机制。
跨链协议不仅仅是为了解决资产的流动问题,更重要的是推动去中心化应用(DApp)和去中心化自治组织(DAO)等创新模式的实现。
二、Axelar:跨链的互联网Axelar 提供了一个简单、安全且去中心化的跨链解决方案,其目标是成为一个“区块链互联网”。Axelar 使用统 ...
