一个 ETH 换一个 BTC,uniBTC 被盗千万
一个 ETH 换一个 BTC,uniBTC 被盗千万备注时间:2024 年 9 月 27 日
作者:作者:[windke]
正文北京时间 2024/9/27 02:28,uniBTC 合约被黑客用 30.8 个 ETH 换出 30.8 个 uniBTC,项目损失超过千万。攻击交易地址:https://etherscan.io/tx/0x725f0d65340c859e0f64e72ca8260220c526c3e0ccde530004160809f6177940
攻击分析合约 https://etherscan.io/address/0x047d41f2544b7f63a8e991af2068a363d210d6da 的逻辑合约https://etherscan.io/address/0x702696b2aa47fd1d4feaaf03ce273009dc47d901#code 中有这么一段代码:
1234567/** * @dev mint uniBTC with native BTC */function mint() external payable ...
写一个 0 转账攻击合约
写一个 0 转账攻击合约备注时间:2024 年 7 月 7 日
作者:[windke]
正文以太坊上有大量转账 Token 数量为 0 的合约,比如这个 https://etherscan.io/address/0x6c5319df4fcca5961d71e117287c76a1f2aad593 。这些合约伪造了首尾相同的地址向用户地址转账,利用了有些人会在转账之前复制上一个地址的习惯来骗取用户资产。这里我写了一个类似功能的合约。
合约代码12345678910111213141516//SPDX-License-Identifier: Unlicensepragma solidity ^0.8.25;import "@openzeppelin/contracts/token/ERC20/IERC20.sol";contract ZeroTransferAttack { function bacthTransferFrom( address[] memory tokenList, address[] memory from ...
警惕科学家钓鱼合约
警惕科学家钓鱼合约备注时间:2024 年 6 月 30 日
作者:[windke]
正文有个朋友给我发了一个合约 https://etherscan.io/address/0x8876a8cf6e142a0aeb834b824e97870111bb7da1 说有套利可能,可以来研究。我发现这的确是一个有明显漏洞的合约,里面还有 15 ETH 的资金。但仔细研究过后发现这是专门用来钓鱼的合约,想要去攻击的智能合约新手很容易上当。
代码分析123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657/** *Submitted for verification at Etherscan.io on 2024-06-18*/// SPDX-License-Identifier: MITpragma solidity 0.7.6;contract smart_bank { function Deposit(uint _unlock ...
坎昆升级简析
坎昆升级简析备注时间:2024 年 3 月 13 日
作者:[windke]
正文以太坊坎昆升级马上到来,我来简单讲一下这次升级需要关注的 EIP 内容。
重点关注
EIP-4844 分片机制 BLOB 加入
坎昆升级最大的变化是引入了新的交易机制 Type3 (区别于 eip1559 的 Type2 、eip2930 的 Type1 和原生的 Type0),用户可以在交易中添加 Blob Data 并支付 Blob Fee 来向区块链提交额外数据。值得注意的是,EVM 无法直接访问 Blob 数据,只能验证 Blob 数据的正确性和完整性。而且 Blob 数据无法永久保存,只能在以太坊上停留大约 18 天。
目前看来 Blob 是为 L2 专门设计的数据存储方式,主流的 Optimistic Rollups 只有 7 天的挑战时间,过期之后的数据使用价值很低。但也不排除有人会用 Blob 来做一些其他的事情。
EIP-1153 操作码 TSTORE/TLOAD 加入
TSTORE/TLOAD 区别于 SSTORE/SLOAD,可以临时操作存储数据 ...
music
console.error("SyntaxError: Unexpected token / in JSON at position 19");
快速了解 Uniswap-v2
快速了解 Uniswap-v2去中心化交易所(DEX)去中心化交易所是指使用智能合约,部署在区块链运行的非托管式交易所。目前的主流去中心化交易所,主要有三大特征:
去中心化运行:应用的运行不依赖于中心化服务器的服务;或者即使所依赖的中心化服务器宕机,应用的核心数据和服务也不会收到影响。
不托管用户资产:用户无需向应用本身或者第三方托管资产,就可以获得完整的交易服务。
无审核服务:应用不会对特定用户拒绝服务,也不会限制用户交易任何种类的资产。
自动化做市商(AMM)在传统的中心化交易所当中,有专门的市商在交易所中挂买卖单,以提供资产流动性。同样,在去中心化交易所,也需要有人为资产提供流动性。然而,不同于中心化交易所挂单成本几乎为0,在区块链上进行频繁的挂单、撤单操作会消耗大量手续费,而且并不及时,这会导致市商的严重亏损。因此,去中心化交易所必需要开发出一套能在区块链上运行的自动化做市商系统,能够为提供流动性的市商自动地配置买卖双边资产,减少损失。
恒定乘积做市模型(CPMM)Uniswap-v2 使用了恒定乘积做市模型来实现自动化做市商。其计算步骤如下:
甲在 Uniswap ...
以太坊扩容:L2 详解
以太坊扩容:L2 详解备注时间:2023 年 6 月 29 日
作者:[windke]
正文以太坊扩容自从以太坊成为行业标准,其性能不足的问题就一直饱受诟病。其实扩展区块链性能无非就两条路:开源或者节流。
所谓开源,就是提高区块链的吞吐能力,这方面目前主流的方案就是分片。但是以太坊的分片方案一直在延期,现在看来在短时间内是没有指望的。至于节流,就是减少单笔交易在链上的数据,以容纳更多的交易。这块的方案倒是比较成熟,并且已经在市场上形成不小的影响,那就是 L2。
侧链与 L2在 L2 还没有火爆之前,侧链才是以太坊扩容方向的热点,很多人到现在都没搞清楚两者的区别。实际上所谓侧链,就是兼容 EVM,且与以太坊有跨链桥可以互通资产的区块链。这些侧链上的交易数据保存在自己的链上,使用自己的代币支付 Gas,和以太坊的关联性并不强,随时都可以自立门户。比如不管是 polygon 还是 bsc 都可以自称为以太坊侧链,但也可以申明自己其实是一条主链。
L2 则完全不同。L2 需要将交易数据压缩后放在以太坊上,所以必须把 ETH 作为支付 Gas 的代币,也不能脱离以太坊作为一条主链来使用。目前火热 ...
快速了解 Compound
快速了解 Compound超额抵押贷款(over-collateralized loan)目前区块链上的去中心化借贷为了保证偿还资金,大多为超额抵押贷款。用户需要抵押比借出资产价值更高的资产,才能获得借贷服务。从这个角度来说,目前的去中心化借贷的平台,与其说是提供借贷服务,更像是在提供金融杠杆服务。目前除了闪电贷,没有其他成熟的无抵押贷款模式。
聚合借贷不同于一对一的抵押借贷,目前绝大多数的去中心化借贷平台都提供聚合借贷服务。只要是平台支持的资产,都可以抵押多种资产从而借贷另外的多种资产,方便了用户的操作。
标的资产(Underlying Token)为了防止有人利用低流动性的资产套取高流动性的资产,去中心化借贷平台都只允许经过审核的高流动性资产作为标的资产进行借贷操作。
cTokencToken 是用户在 Compound 上存入资产的凭证,每一种标的资产都有对应的一种 cToken,凭此可以换回质押资产的本金和收益。
兑换率(Exchange Rate)兑换率是 cToken 与标的资产的兑换比例,兑换率会随着时间和利率的变化而不断上涨,持有 cToken 就等于不断生息,所以也叫 ...
快速部署 Uniswap-v2
快速部署 Uniswap-v2这是一套自动化部署Uniswap-v2的代码,可以实现快速部署Uniswap-v2
快速部署是如何实现的要实现快速部署Uniswap-v2,其本质上是实现Uniswap-v2合约部署和配置的自动化。这里面合约自动部署使用到了hardhat框架,合约自动配置则使用到了uniswap/sdk-core v3.0.3(为了找到这个两年前的版本,可费了我不少时间)。只要用魔改后的SDK换掉原来的uniswap/sdk,就可以实现在前端项目里自动化配置合约。
祝大家玩的开心。
部署环境
ubuntu 20.04
node v16.13.0
npm 8.1.4
yarn 1.22.17
快速部署Uniswap-v2合约
获取测试代币
我们选择Rinkeby测试网络部署Uniswap-v2,首先需要获取测试代币。
官方的水龙头,需要在twitter发帖
这里推荐通过更加简单的 chainlink水龙头 获取测试用代币。
下载项目
uniswap-v2-contract
配置编译环境
在根目录下创建文件/envs/env.rinkeby ...
使用官方项目部署 Uniswap-v2
使用官方项目部署 Uniswap-v2获取测试代币我们选择Rinkeby测试网络部署Uniswap-v2,首先需要获取测试代币。
官方的水龙头,需要在twitter发帖
这里推荐通过更加简单的 chainlink水龙头 获取测试用代币。
使用 remix 部署合约
打开 remix 官网。
部署WETH
编译设置
新建文件 WETH.sol,将 WETH合约源码 复制过来。
使用默认环境编译
部署设置
CONTRACT 选择 WETH9,ENVIRONMENT 选择 Injected Web3
连接 MetaMask 的 Rinkeby 网络进行部署。
部署Factory
编译设置
新建文件 UniswapV2Factory.sol,将 Factor合约源码 复制过来。
使用默认环境编译
部署设置
随便设置一个 _feeToSetter 地址之后,CONTRACT 选择UniswapV2Factory,ENVIRONMENT 选择 Injected Web3
连接 MetaMask 的 Rinkeby 网络进行部署。
部署Router
编译设置
...
