手册
Remix + OpenZeppelin:无需安全帽即可交付 (Remix Openzeppelin)
在没有 Hardhat/Foundry 的情况下,如何使用 Remix IDE 和 OpenZeppelin v4.1 GitHub 导入来编译和部署 Bare Crypto 协议? ADR 和权衡。
裸加密货币 Solidity 市场协议
部分 1 的 5
不带 Hardhat/Foundry 的 BareNFT,带有 Remix IDE 和 OpenZeppelin v4.1 GitHub 导入、储备、英国拍卖和 NFT 门控 BareToken 发行架构; ADR、弱 RNG 和紧急权力权衡。
无工具链情况下的合约交付
Bare Crypto 市场协议是通过直接导入带有 GitHub URL 的 OpenZeppelin v4.1.0 合约在 Remix IDE 中编译的,无需安装本地 Hardhat 或 Foundry 管道。这是针对 2021 年快速测试和单一操作员部署而精心设计的 ADR:速度和释放销获得提升,但可重复 CI 和类型安全测试丢失。```text Remix IDE ├─ BareNFT.sol ├─ BareNFTReserve.sol ├─ BareNFTAuction.sol └─ BareToken.sol | v https://github.com/OpenZeppelin/.../v4.1.0/... | v injected Web3 / MetaMask deploy
## 第一次提到的概念```text
📦 Remix IDE
Tarayici tabanli Solidity derleyici ve deploy yuzeyi; lokal node_modules gerektirmez.
📦 GitHub import pin
OpenZeppelin sozlesmelerini v4.1.0 blob URL'siyle sabitleyerek surum kaymasini onleme.
📦 ADR
Mimari karar kaydi: ne secildi, neden, hangi sonuc kabul edildi.
📦 Tekrarlanabilir build
Ayni kaynaklarin farkli makinelerde ayni bytecode'u uretmesi; Remix'te zayif nokta.
```Remix + 固定的 GitHub 导入是“快速正确”和“CI 正确”之间的有意识的权衡;如果没有pin,每次编译可能会有不同的依赖关系。
## ADR:没有安全帽,只有 Remix
决定:保留 Remix 中的协议协议,从 GitHub 导入 OpenZeppelin v4.1.0,并通过 MetaMask 进行部署。理由:小团队、单一操作员、快速迭代。接受的价格:没有自动测试套件、覆盖范围、气体报告器和确定性工件存档。该 ADR 在“让市场上线”的压力下故意推迟了 CI 债务。
## 固定 OpenZeppelin 表面
BareNFT 和 BareToken 通过 https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v4.1.0/... 拉动 OpenZeppelin ERC721/ERC20/AccessControl/Pausable 表面。 标签 pin 中断次要版本滑动;然而,Remix 缓存和 .deps 文件夹允许团队询问“广播哪个字节码?”它没有像当地的 Hardhat 工件那样清楚地回答这个问题。```text
import OZ v4.1.0
ERC721 + Enumerable + Burnable + Pausable
AccessControlEnumerable
SafeMath / IERC20
|
v
Remix .deps/github mirror
```## 失败:浮动依赖和静默分叉
如果操作员意外地将 blob URL 中的标记更改为 master,或者 Remix 使用不同的编译器编译指示重新编译,则会出现看起来“像”相同源但生成不同字节码的分叉。与旧 ABI 对话时,市场 UI 会恢复索赔/出价调用;该事件被认为是一个“前端错误”,根本原因是工具链不规范。就性能而言,在 Remix 中,每次构建都会重新解析大型 OZ 树 - 反馈循环比没有本地缓存的 CI 更慢且更脆弱。
## 本期最令人困惑的对决```text
❌ Remix = sadece oyuncak, production'da kullanilmaz
✓ Remix + pinned OZ, kucuk operator marketplace'lerinde gecerli bir ADR olabilir; bedeli dokumante edilmelidir
❌ GitHub import otomatik olarak guvenlidir
✓ Tag pin olmadan import, tedarik zinciri kaymasidir; v4.1.0 blob sabitlemesi zorunlu disiplindir
❌ Hardhat yoksa audit edilemez
✓ Audit kaynak ve bytecode uzerinden yapilir; eksik olan tekrarlanabilir pipeline ve regresyon testidir
您自己的系统清单
- 您的 OpenZeppelin 导入 URL 中是否有版本标签(例如 v4.1.0)?
- 来自同一提交的两个 Remix 构建是否会提供相同的字节码哈希?
- 已部署地址的 ABI 来自哪个工件 - 混音还是手动复制?
- ADR 或 README 中是否固定了编译器版本和优化设置?
- 如果依赖关系消失,市场 UI 会显示什么症状,谁会注意到?
本节中需要记住的事情
- Bare Crypto 为了速度而选择了 Hardhat-free Remix 交付;他把它当作债务留下来,因为他知道它是可以重复的。
- OpenZeppelin v4.1 GitHub pin 是在没有工具链的情况下唯一真正的版本锁。
- 字节码偏移在UI中显示为“奇怪的恢复”;为什么 root 通常不是前端?
快速交货是一个特点;无销进口是无声前叉工厂。
FAQ
Frequently asked questions
什么是 Remix IDE?
基于浏览器的Solidity编译器和部署界面;不需要本地node_modules。
什么是 GitHub 导入 pin?
通过将 OpenZeppelin 合约与 v4.1.0 blob URL 固定来防止版本蔓延。
“Remix = 只是一个玩具,未用于生产”是真的吗?
Remix + 固定 OZ 可能是小型运营商市场中的有效 ADR;费用必须记录在案
本节修复了什么?
本节阐述了 Bare Crypto 选择无 Hardhat 交付模型的原因以及这种选择会导致哪些故障场景。 Bare Crypto 市场协议是通过直接导入带有 GitHub URL 的 OpenZeppelin v4.1.0 合约在 Remix IDE 中编译的,无需安装本地 Hardhat 或 Foundry 管道。这是针对 2021 年快速测试和单一操作员部署而精心设计的 ADR:速度和释放销获得提升,但可重复 CI 和类型安全测试丢失。
学到的工程原理
- 工具链 ADR 应根据团队规模和运营商信任模型编写。
- 如果没有使用标签固定 GitHub 导入,则不应完成生产部署。
- 没有可重复字节码的事件根本原因分析只是猜测。
继续阅读
继续阅读
系列中的下一个
BareNFT:角色、可暂停和令牌 URI
BareNFT 提供具有 ERC721 Enumerable/Burnable/Pausable 和 AccessControl 的角色门控铸币(to,id,uri)。每个令牌 URI 和暂停权衡。
同系列
BareNFTReserve:托管、RandomBuy 和弱 RNG
仅限所有者 createNewListing、buy 和 randomBuy — keccak256(revealNonce, block.difficulty, msg.sender) % 3. 所有者运营的市场 ADR 和紧急转移。
同系列
BareNFTAuction:索赔、退款和紧急权力
英国拍卖:投标、索赔、取消、保留下返回和所有者紧急转移Nft/transferFunds权衡。