合约开发
智能合约安全:6.抢先提交Front Running
什么是 Front Running Front Running 指 miners 可以看到待处理的交易内容。当发现某笔高价交易时,它们可以在该交易之前插入一笔交易,使自己获利。举个例子,Alice 决定购买某个稀缺 Token, 出价为 10 ETH。这笔交易在区块链上公开可见。…
智能合约安全:5.selfdestruct
自毁函数 selfdestruct 是智能合约一个具有潜在危险性的功能,黑客可以通过多种手段利用它进行恶意攻击。本文将通过代码实例分析 selfdestruct 攻击方式,以及如何通过安全编码防范这类攻击。 攻击者可以通过调用目标合约的 selfdestruct 函数破坏合约…
智能合约安全:4.整数溢出
1. 在智能合约开发中,整数溢出是一个常见的安全隐患。由于数字类型在 Solidity 中的默认长度有限,执行算术运算时可能会导致整数溢出。攻击者可以利用此漏洞进行各种欺诈。 一个简单的整数溢出例子如下:
Copy
mapping (address => uint256…
智能合约安全:3.重入攻击
重入攻击是智能合约安全领域的一大威胁。当合约函数在调用过程中状态发生变化,未及时同步时,攻击者可以利用这一时间差进行重入调用,达到异常执行控制流程的效果。本文将详细解析重入攻击的形式、危害以及对应的安全防范 coding 范式。 什么是重入攻击
重入攻击指的是恶意攻击者重复调用合…
智能合约安全:2.绕过EOA检查
智能合约安全非常重要。许多 DApp 会要求调用者必须是 EOA (外部拥有账户), 不能是其他合约,以防止恶意调用。一个常见的检查方式是使用 isContract () 函数: Copy
function isContract(address addr) internal…
链游公司面试题
1. 说是链游公司,但是没问游戏相关的,问的主要还是合约 2. 面试:简单的自我介绍+简历上的项目 + chainlink vrf 原理 + 代理合约的原理
3.chainlink vrf 原理:Chainlink 预言机是一个去中心化网络,在网络中有很多预言机节点…
智能合约的gas优化:2.定长数组
Copy // SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract test {
uint256[5] test = [1, 2, 3, 4, 5];
function setTest…
智能合约安全:1.随机数攻击
keccak256 哈希算法,可以将任意长度的输入压缩成 64 位 16 进制的数,且哈希碰撞的概率近乎为 0; abi.encodePacked 对 seed 参数进行编码
block.timestamp 代表调用 random 这个函数的时间;
block…
智能合约的gas优化,1.拒绝openzeppelin
能不用 openzeppelin 就不用 openzeppelin 比如写一个访问控制和所有权转移
1. 自己写逻辑
Copy
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
contract test…
ERC1155
1.ERC1155 是什么,ERC1155,允许使用者在同一个智能合约中无限量地重复使用同质化或者非同质化的代币。 2. 如果你在开发一款链游,游戏中需要有两种货币,金币和装备,那么你需要一个 ERC20,和一个 ERC721 两个合约,如果使用 ERC1155 的话,同质化代币…
hardhat开发合约
首先需要一个科学上网的工具,6 元一个月嘎嘎好用 https://mxwljsq.com/user/shop 安装 WSL,WSL 是 Linux 的 Windows 子系统,使用管理员权限打开 powershell,一步到位.
Copy
wsl --install
安装写…
web3网站前端的去中心化
以我们最常使用的 DApp 为例,基本上常见的 dapp 都分为前端网页和后端智能合约部分,智能合约在公链上执行代码是不可篡改的,这实现了去中心化,但是前端网页却并非去中心化,大多数情况下它是部署在中心化的机房服务器之中,同时也很容易受到黑客的篡改…
Dapp Ticketmaster Clone
start a new npm project Copy
npm init
2.install hardhat
Copy
npm install hardhat
3.start a new hardhat project
Copy
npx hardhat/npx hardhat…
ERC20
start a new npm project Copy
npm init
2.install hardhat
Copy
npm install hardhat
3.start a new hardhat project
Copy
npx hardhat/npx hardhat…
ERC721 (NFT)
Use OpenZeppelin Contract Wizard develop contract https://docs.openzeppelin.com/contracts/4.x/wizard
Mintable : mint nFt
Auto increment Ids…
用alchemy获得最新的区块
1. 创建一个‘’app‘’,选择测试网 goerli 1.set up a new ''app'',select goerli
https://dashboard.alchemy.com/
2. 复制 apikey
2.copy apikey
2. 创建一个新的项目,并安装…
Chainlink Automation
按照固定时间,自动执行合约的某个或者多个功能 1. 随便部署一个合约,拿到地址和 ABI
Copy
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;
import "@openzeppelin/contracts…
defi Chainfish
Chainfish 的特点是用需要固定鱼头和鱼尾,字符串生成鱼的身体部分,项目的灵感来源于 Chainface。
https://opensea.io/collection/chainfaces
合约文件结构
FishToken.sol
项目自己发行的 fishtoken
sF…