Canvie.crypto

Canvie.crypto

A Javascript & Solidity Programmer.
Subscribe to Canvie.crypto
Receive the latest updates directly to your inbox.

安全审查-Elevator破解

有道安全题叫Elevator,意思是说要攻击这个合约,修改里面的top变量,使得top的值为true。我们先看原题:

安全审查-谈谈Reentrancy攻击

在Defi的应用中,防止重入攻击是最基本的需求,曾经也有很多因为没有防御机制,造成重要损失的现实案例。可以先看一下没有防御机制的代码

为什么bool比uint256消耗更多的gas

之前遇到有朋友这么问:“为什么bool比uint256消耗更多的gas”。首先要说明的是这个说法是不准确的,并不是简单的bool和uint256这个类型差异造成的。我们在看OpenZeppelin的ReentrancyGuard.sol的源码时,会看到下面的写法,我们从底层机制上分析

安全审计-转账的疑惑

在King这个题目中,只要转账金额大于当前King之前转账的金额时,你就成了新的King,同时你转的金额会全部贡献给前一个King。看代码

安全审计-private带来的危害

ethernaut上有道题叫Vault,要求获取到密码来解锁。先看代码

安全审计-交易打包的底层问题

最近在刷Ethersnaut,有道题目是猜测问题,需要在看到被攻击合约代码后,找到攻击点,使得可以连续猜中10次以上。被攻击合约中,本意是想使用随机数来计算。可以在整个计算中是可以预测和计算,这并不是真的是随机数。如果是要使用随机数,最好是是用预言机来获取随机数,在每次计算时都是未知和不可以预测的,这样才会防止被攻击。在web2的传统开发思路中,循环10次就可以完成10次的猜测动作,这个是个容易忽视的陷阱。在合约开发中,首先一定要熟悉整个交易打包的底层机制,首先是发出交易,进入内存池等待,交易打包,然后对交易进行计算处理(其中就有EVM参与的执行),如果是在一个交易中循环执行10次,但是block.number等信息始终不变,一个交易中block信息不会变化。要想实现10次有不同的block.number,则要发起10次不同的交易。
Card Header

leetCode 寻找两个有序数组的中位数

Canvie.crypto
November 07
\--END
Card Header

细品Map

Canvie.crypto
October 28
写过JAVA,对于map这个东西应该比较熟悉了。在javascript中也有map(映射),就是键值对数据项的集合。