乐闻世界logo
搜索文章和话题

面试题手册

什么是 NFT?详解非同质化代币标准、元数据存储和元宇宙应用场景

NFT(Non-Fungible Token,非同质化代币) 是一种独特的数字资产,每个代币都有唯一的标识符和元数据,无法相互替换。NFT vs FT(同质化代币)同质化代币(FT): 非同质化代币(NFT):┌─────────┐ ┌─────────┐ ┌─────────┐ ┌─────────┐│ 1 ETH │ =│ 1 ETH │ │ CryptoPunk│ ≠│ Bored Ape││ │ │ │ │ #1234 │ │ #5678 ││ 可互换 │ │ 价值相同 │ │ 唯一 │ │ 独特 │└─────────┘ └─────────┘ └─────────┘ └─────────┘FT 例子:BTC、ETH、USDC NFT 例子:数字艺术、游戏道具、域名| 特性 | FT | NFT || -------- | ------ | ---------------- || 可互换性 | 可互换 | 不可互换 || 唯一性 | 无区别 | 每个唯一 || 用途 | 货币、支付 | 收藏品、身份、凭证 || 标准 | ERC-20 | ERC-721、ERC-1155 |NFT 技术标准1. ERC-721(以太坊)特点:每个代币唯一,适合独特资产。// ERC-721 核心接口interface IERC721 { // 查询余额 function balanceOf(address owner) external view returns (uint256); // 查询所有者 function ownerOf(uint256 tokenId) external view returns (address); // 转账 function transferFrom(address from, address to, uint256 tokenId) external; // 授权 function approve(address to, uint256 tokenId) external; // 获取元数据 URI function tokenURI(uint256 tokenId) external view returns (string memory);}数据结构:mapping(uint256 => address) private _owners; // tokenId → ownermapping(address => uint256) private _balances; // owner → balancemapping(uint256 => address) private _tokenApprovals; // tokenId → approved2. ERC-1155(多代币标准)特点:一个合约支持多种代币(FT + NFT)。// ERC-1155 核心接口interface IERC1155 { // 查询余额(支持多类型) function balanceOf(address account, uint256 id) external view returns (uint256); // 批量转账 function safeBatchTransferFrom( address from, address to, uint256[] calldata ids, uint256[] calldata amounts, bytes calldata data ) external;}适用场景:游戏道具(多种装备)票务系统批量发行3. 标准对比| 标准 | 代币类型 | Gas 效率 | 适用场景 || ------------ | ---- | ------ | ------- || ERC-20 | 同质化 | 高 | 货币、积分 || ERC-721 | 非同质化 | 中 | 独特艺术品 || ERC-1155 | 混合 | 高 | 游戏、批量发行 |NFT 元数据存储存储方案对比链上存储(On-chain):┌─────────────────────────────────────┐│ 合约直接存储元数据 ││ • 名称、描述、属性 ││ • 图像 Base64 编码 ││ ││ 优点:永久保存、完全去中心化 ││ 缺点:Gas 成本极高 │└─────────────────────────────────────┘链下存储(Off-chain):┌─────────────────────────────────────┐│ 链上存储 URI 指向链下资源 ││ ││ 方案1:中心化服务器 ││ https://example.com/nft/1.json ││ ⚠️ 服务器宕机则 NFT 失效 ││ ││ 方案2:IPFS(推荐) ││ ipfs://QmXxx.../1.json ││ ✅ 去中心化、内容寻址 ││ ││ 方案3:Arweave ││ 永久存储,一次性付费 │└─────────────────────────────────────┘元数据 JSON 格式{ "name": "CryptoPunk #1234", "description": "A unique CryptoPunk character", "image": "ipfs://QmXxx.../image.png", "attributes": [ { "trait_type": "Type", "value": "Female" }, { "trait_type": "Hair", "value": "Mohawk" }, { "trait_type": "Accessories", "value": "Earring" } ]}NFT 铸造流程NFT 铸造过程:1. 准备元数据 创建图像 + JSON 元数据文件 ↓2. 上传到 IPFS 获得 content hash ↓3. 调用合约铸造函数 mint(address to, string memory uri) ↓4. 合约记录 • tokenId 自增 • 映射 owner • 存储 tokenURI ↓5. 触发 Transfer 事件 在区块链浏览器可查询NFT 在元宇宙中的应用1. 数字身份(Avatar)元宇宙身份系统:┌─────────────────────────────────────┐│ 用户钱包地址 ││ 0x1234...abcd │└──────────────┬──────────────────────┘ │ ┌──────────┼──────────┐ ↓ ↓ ↓┌───────┐ ┌───────┐ ┌───────┐│Avatar │ │ 徽章 │ │ 成就 ││ NFT │ │ NFT │ │ NFT ││ │ │ │ │ ││ • 外观 │ │ • VIP │ │ • 等级 ││ • 服装 │ │ • 身份 │ │ • 技能 │└───────┘ └───────┘ └───────┘2. 虚拟地产代表项目:Decentraland、The Sandbox虚拟地产特性:• 坐标唯一(x, y)• 可建造虚拟建筑• 可举办虚拟活动• 可出租或出售• 价值取决于位置和流量3. 游戏资产Play-to-Earn 模式:传统游戏: 区块链游戏:┌─────────┐ ┌─────────┐│ 购买皮肤 │ │ 购买 NFT ││ 归游戏公司│ │ 真正拥有 ││ 无法转让 │ │ 自由交易 ││ 游戏关服 │ │ 跨游戏使用││ = 资产归零│ │ 永久保存 │└─────────┘ └─────────┘4. 社交代币与 DAO社区 NFT 会员体系:Level 1: 普通会员 NFT ↓ 持有 30 天Level 2: 活跃会员 NFT ↓ 参与治理Level 3: 核心贡献者 NFT ↓ 创建提案Level 4: 治理委员会 NFTNFT 市场机制交易模式| 模式 | 说明 | 代表平台 || -------- | --------- | ------------ || 挂单交易 | 卖家定价,买家购买 | OpenSea、Blur || 拍卖 | 英式拍卖、荷兰拍卖 | Foundation || 聚合器 | 多平台比价 | Gem、Genie || 版税 | 创作者持续收益 | 标准 2.5-10% |版税机制// 版税实现示例function transferFrom(address from, address to, uint256 tokenId) public { // 计算版税 uint256 royaltyAmount = salePrice * royaltyPercentage / 10000; // 转账给创作者 payable(creator).transfer(royaltyAmount); // 转账给卖家 payable(from).transfer(salePrice - royaltyAmount); // 转移 NFT 所有权 _transfer(from, to, tokenId);}NFT 发展趋势动态 NFT(dNFT):元数据可随条件变化灵魂绑定代币(SBT):不可转让的身份凭证碎片化 NFT:将高价值 NFT 拆分为小份跨链 NFT:在不同区块链间转移面试要点理解 NFT 与 FT 的本质区别掌握 ERC-721 和 ERC-1155 的区别了解元数据存储的各种方案熟悉 NFT 铸造流程掌握 NFT 在元宇宙中的应用场景理解版税机制的实现了解 NFT 市场的发展趋势
阅读 0·3月7日 19:47

什么是 DeFi?详解去中心化金融的核心协议和流动性挖矿机制

DeFi(Decentralized Finance,去中心化金融) 是建立在区块链上的金融服务生态系统,通过智能合约实现无需中介的借贷、交易、理财等金融服务。DeFi 与传统金融对比传统金融(CeFi) DeFi(去中心化金融)┌──────────────┐ ┌──────────────┐│ 银行 │ │ 智能合约 ││ 交易所 │ → │ 自动执行 ││ 券商 │ │ 无需许可 │└──────────────┘ └──────────────┘ ↓ ↓ 需要信任机构 信任代码 门槛高、审查 开放、透明| 特性 | 传统金融 | DeFi || -------- | ---------- | ---------- || 准入门槛 | 需要身份认证 | 无需许可,有钱包即可 || 运营时间 | 工作日 9-17 点 | 7×24 小时 || 透明度 | 不透明 | 链上完全透明 || 控制权 | 机构控制 | 用户自持资产 || 收益率 | 较低(0.5-3%) | 较高(5-20%+) || 风险 | 机构信用风险 | 智能合约风险 |DeFi 核心协议类型DeFi 生态系统├── DEX(去中心化交易所)│ ├── AMM(自动做市商)│ └── 订单簿模式├── 借贷协议│ ├── 超额抵押借贷│ └── 闪电贷├── 稳定币│ ├── 抵押型(DAI)│ └── 算法型(UST)├── 衍生品│ ├── 永续合约│ └── 期权└── 收益聚合器 └── 流动性挖矿1. DEX(去中心化交易所)AMM(自动做市商)机制传统订单簿 vs AMM:订单簿模式: AMM 模式:买单 卖单 流动性池┌──────┐ ┌──────┐ ┌─────────────┐│ 100 │ │ 102 │ │ ETH │ USDC ││ 99 │ │ 103 │ │ 100 │ 200K ││ 98 │ │ 104 │ └─────────────┘└──────┘ └──────┘ ↑ 需要对手方 与池子交易恒定乘积公式(Uniswap):x × y = k其中:x = 代币 A 数量y = 代币 B 数量k = 常数(流动性不变时)示例:池子:100 ETH + 200,000 USDCk = 100 × 200,000 = 20,000,000用 1 ETH 能换多少 USDC?(100 + 1) × (200,000 - Δy) = 20,000,000Δy ≈ 1,980 USDC无常损失(Impermanent Loss)流动性提供者面临的风险:初始:存入 1 ETH + 2000 USDC(ETH 价格 $2000)情况1:ETH 涨到 $4000- 如果不提供流动性:1 ETH × $4000 + 2000 USDC = $6000- 提供流动性后:池子自动平衡 √k = √(0.707 × 2828) ≈ $5656- 无常损失:$6000 - $5656 = $344 (5.7%)2. 借贷协议超额抵押借贷Aave/Compound 机制:存款流程: 借款流程:┌─────────┐ ┌─────────┐│ 存入 ETH │ │ 抵押 ETH ││ 获得 aETH │ │ 借款 USDC││ 赚取利息 │ │ │└─────────┘ │ 清算线:75%│ │ │ │ 利率模型:│ │ • 利用率↑ │ │ • 利率↑ │ └─────────┘关键参数:抵押因子(Collateral Factor):75%(最多借出抵押品价值的 75%)清算阈值(Liquidation Threshold):80%健康因子(Health Factor):\< 1 时触发清算闪电贷(Flash Loan)原理:在一个区块内借入和归还,无需抵押。闪电贷流程:1. 借入 1000 ETH(无抵押) ↓2. 在 DEX A 用 ETH 买代币(价格低估) ↓3. 在 DEX B 卖出代币(价格高估) ↓4. 归还 1000 ETH + 0.09% 手续费 ↓5. 套利利润留在合约中⚠️ 所有操作必须在一个原子交易中完成应用场景:套利抵押品互换自我清算3. 稳定币类型对比| 类型 | 机制 | 代表 | 优点 | 缺点 || -------- | -------- | --------- | ----- | ------ || 法币抵押 | 1:1 美元储备 | USDT、USDC | 价格稳定 | 中心化 || 加密抵押 | 超额加密资产抵押 | DAI | 去中心化 | 资本效率低 || 算法稳定 | 算法调节供需 | UST(已崩盘) | 资本效率高 | 死亡螺旋风险 |DAI 机制DAI 生成流程:1. 存入 150 ETH(价值 $300,000) ↓2. 铸造 100,000 DAI(抵押率 150%) ↓3. 使用 DAI 进行交易/投资 ↓4. 归还 100,000 DAI + 稳定费 ↓5. 取回抵押的 ETH清算机制:- 抵押率 < 150%:触发清算- Keeper 拍卖抵押品- 偿还 DAI 债务4. 流动性挖矿(Yield Farming)原理通过提供流动性获得代币奖励。流动性挖矿流程:1. 提供流动性 ETH + USDC → Uniswap 池 ↓2. 获得 LP Token ↓3. 质押 LP Token 到 Farm 合约 ↓4. 获得奖励 • 交易手续费(0.3%) • 平台代币(UNI、SUSHI)收益率计算APY(年化收益率)计算:基础公式:APY = (1 + r/n)^n - 1其中:r = 周期收益率n = 复利次数/年示例:日收益率 0.1%,复利计算APY = (1 + 0.001)^365 - 1 ≈ 44%⚠️ 注意:APY 会随价格波动,非保证收益风险无常损失:价格波动导致 LP 损失智能合约风险:合约漏洞被攻击无常损失 + 挖矿奖励 \:币价暴跌Rug Pull:项目方卷款跑路5. DeFi 组合性(Composability)乐高积木效应:收益最大化策略示例:1. 在 Aave 存入 ETH 获得 aETH ↓2. 将 aETH 作为抵押在 Compound 借款 USDC ↓3. 用 USDC 在 Curve 提供流动性获得 CRV ↓4. 质押 CRV 获得 veCRV 治理权 ↓5. 投票决定池子奖励分配风险:组合越多,风险越大(风险传染)面试要点理解 AMM 恒定乘积公式掌握无常损失的计算和影响了解超额抵押借贷的清算机制理解闪电贷的原理和应用场景熟悉不同类型稳定币的优缺点掌握流动性挖矿的收益率计算了解 DeFi 组合性的风险能够分析 DeFi 协议的经济模型
阅读 0·3月7日 19:41

区块链扩容方案有哪些?详解 Layer 2、分片技术和侧链原理

区块链不可能三角(Blockchain Trilemma):去中心化(Decentralization)安全性(Security)可扩展性(Scalability)三者无法同时最大化,扩容方案旨在平衡这三者。扩容方案分类扩容方案├── Layer 1(链上扩容)│ ├── 增大区块大小│ ├── 缩短出块时间│ └── 分片技术(Sharding)│└── Layer 2(链下扩容) ├── 状态通道(State Channels) ├── 侧链(Sidechains) ├── Plasma ├── Rollups │ ├── Optimistic Rollups │ └── ZK Rollups └── ValidiumLayer 1 扩容方案1. 分片技术(Sharding)原理:将网络分割成多个并行运行的子网络(分片),每个分片独立处理交易。传统区块链: 分片区块链:┌─────────────┐ ┌─────┬─────┬─────┐│ 单一链 │ │ 分片1│ 分片2│ 分片3││ 处理所有 │ → │处理 │处理 │处理 ││ 交易 │ │交易A│交易B│交易C││ TPS: 15 │ └─────┴─────┴─────┘└─────────────┘ TPS: 15×3=45以太坊 2.0 分片设计:信标链(Beacon Chain):协调各分片64 个数据分片:并行处理交易交联(Crosslinks):分片间通信优点:✅ 线性提升吞吐量✅ 保持去中心化缺点:❌ 跨分片交易复杂❌ 实现难度大Layer 2 扩容方案1. 状态通道(State Channels)原理:链下建立通道进行多次交易,只在开启和关闭时与主链交互。状态通道流程:1. 开启通道 Alice ──锁定 10 ETH──→ 智能合约 ←──锁定 10 ETH── Bob ↓ 链上交易2. 链下交易(多次,零 Gas) Alice ──签署状态──→ Bob Bob ──签署状态──→ Alice (每次更新余额分配)3. 关闭通道 提交最终状态到链上,合约按最终状态分配资金代表项目:闪电网络(Bitcoin)、雷电网络(Ethereum)适用场景:小额高频支付2. Rollups(卷叠)原理:在链下执行交易,将交易数据压缩后提交到主链。Rollup 架构:链下执行层 链上验证层┌───────────┐ ┌───────────┐│ 排序器 │ │ Rollup ││ (Sequencer)│ │ 合约 ││ │ │ ││ • 接收交易 │ ──→ │ • 存储压缩 ││ • 执行交易 │ │ 交易数据 ││ • 生成证明 │ │ • 验证状态 ││ • 压缩数据 │ │ 根 │└───────────┘ └───────────┘ ↑ ↑ 高 TPS 以太坊安全性 低成本Optimistic Rollups(乐观卷叠)原理:假设交易有效,通过欺诈证明(Fraud Proof)机制挑战无效交易。Optimistic Rollup 流程:1. 排序器打包交易,提交到 L12. 7 天挑战期(Withdrawal Period)3. 期间任何人可提交欺诈证明4. 无挑战则交易最终确认代表项目:Arbitrum、Optimism优点:✅ EVM 兼容性好✅ 开发迁移成本低缺点:❌ 7 天提款延迟❌ 需要信任假设ZK Rollups(零知识卷叠)原理:使用零知识证明(ZK-SNARKs/STARKs)验证交易有效性。ZK Rollup 流程:1. 链下执行大量交易2. 生成有效性证明(Validity Proof)3. 提交证明和状态根到 L14. 智能合约验证证明5. 立即确认,无需等待期代表项目:zkSync、StarkNet、Polygon zkEVM优点:✅ 即时最终性✅ 更高的安全性(密码学保证)✅ 更快的提款速度缺点:❌ 开发复杂度高❌ 计算成本较高3. 侧链(Sidechains)原理:独立的区块链,通过双向锚定与主链交互。侧链架构:┌─────────────┐ 双向锚定 ┌─────────────┐│ 以太坊 │ ←────────────────────→ │ 侧链 ││ 主链 │ • 资产锁定/释放 │ (Polygon/ ││ │ • 状态验证 │ xDai) ││ 高安全性 │ │ 高吞吐量 ││ 低 TPS │ │ 低安全性 │└─────────────┘ └─────────────┘代表项目:Polygon PoS、xDai与 Rollup 的区别:侧链有自己的共识机制不继承主链安全性验证者集较小扩容方案对比| 方案 | TPS | 安全性 | 提款时间 | EVM 兼容 | 代表项目 || ----------------- | ------ | ----- | ---- | ------ | --------- || 以太坊主网 | 15 | ⭐⭐⭐⭐⭐ | - | ✅ | Ethereum || 状态通道 | 无限 | ⭐⭐⭐⭐ | 即时 | ❌ | Lightning || Optimistic Rollup | 2K-4K | ⭐⭐⭐⭐ | 7 天 | ✅ | Arbitrum || ZK Rollup | 2K-10K | ⭐⭐⭐⭐⭐ | 分钟级 | ✅/❌ | zkSync || 侧链 | 7K+ | ⭐⭐⭐ | 分钟级 | ✅ | Polygon || 分片(未来) | 100K+ | ⭐⭐⭐⭐⭐ | - | ✅ | ETH 2.0 |面试要点理解区块链不可能三角的含义掌握 Layer 1 和 Layer 2 的区别能够解释 Optimistic Rollup 和 ZK Rollup 的核心差异了解状态通道的适用场景理解分片技术的挑战知道不同方案的权衡取舍
阅读 0·3月7日 12:14

区块链中使用了哪些密码学技术?详解哈希函数、数字签名和 Merkle Tree

密码学(Cryptography) 是区块链安全性的基石,通过数学算法保证数据的机密性、完整性、真实性和不可抵赖性。1. 哈希函数(Hash Function)定义与特性哈希函数是将任意长度输入转换为固定长度输出的单向函数。关键特性:| 特性 | 说明 | 区块链应用 || -------- | ---------------- | ----- || 确定性 | 相同输入总是产生相同输出 | 数据验证 || 单向性 | 无法从哈希值反推原始数据 | 保护隐私 || 抗碰撞性 | 难以找到两个不同输入产生相同输出 | 防篡改 || 雪崩效应 | 输入微小变化导致输出巨大差异 | 检测篡改 |常用哈希算法SHA-256(比特币使用):输入:"Hello Blockchain"输出:a8f5f167f44f4964e6c998dee827110c9a0c5e1e7a5b6e5f8d9c2b1a4e7f3d6(固定 256 位 / 64 个十六进制字符)Keccak-256(以太坊使用):SHA-3 标准的变种抗长度扩展攻击用于生成以太坊地址区块链中的应用区块结构中的哈希应用:┌─────────────────────────────────────┐│ 区块头 (Block Header) │├─────────────────────────────────────┤│ 前一区块哈希 (Previous Hash) │ ← 链接区块,形成链条│ Merkle Root │ ← 交易数据完整性验证│ 时间戳 (Timestamp) ││ Nonce │└─────────────────────────────────────┘区块哈希 = SHA256(SHA256(区块头))2. 数字签名(Digital Signature)非对称加密基础密钥对生成:┌──────────────┐ ┌──────────────┐│ 私钥 (SK) │ ←─────→ │ 公钥 (PK) ││ (保密) │ 数学关联 │ (公开) │└──────────────┘ └──────────────┘ ↓ ↓ 用于签名 用于验证常用算法:ECDSA(Elliptic Curve Digital Signature Algorithm):比特币、以太坊使用EdDSA(Edwards-curve Digital Signature Algorithm):更快更安全签名与验证流程交易签名过程:1. 交易数据准备 {"from": "0xabc...", "to": "0xdef...", "value": 100}2. 计算交易哈希 txHash = Keccak256(交易数据)3. 使用私钥签名 signature = ECDSA_Sign(私钥, txHash)4. 广播交易 交易数据 + 签名 + 公钥验证过程:ECDSA_Verify(公钥, txHash, signature) → true/false以太坊地址生成1. 生成私钥(256 位随机数) 私钥 = 随机数2. 通过椭圆曲线计算公钥 公钥 = 私钥 × G(曲线基点)3. 计算公钥哈希 hash = Keccak256(公钥)4. 取后 20 字节作为地址 地址 = "0x" + hash[12:32]3. Merkle Tree(默克尔树)结构与原理Merkle Tree 结构: Root Hash / \ Hash 1-2 Hash 3-4 / \ / \ Hash 1 Hash 2 Hash 3 Hash 4 | | | | Tx 1 Tx 2 Tx 3 Tx 4(每个 Hash = SHA256(子节点哈希拼接))"默克尔证明(Merkle Proof)轻节点验证交易:验证 Tx 3 是否存在于区块中:需要数据:- Tx 3 的哈希- Hash 4(兄弟节点)- Hash 1-2(叔节点)- Root Hash(区块头中)验证步骤:1. Hash 3 = SHA256(Tx 3)2. Hash 3-4 = SHA256(Hash 3 + Hash 4)3. 计算 Root = SHA256(Hash 1-2 + Hash 3-4)4. 比较计算的 Root 与区块头中的 Root区块链中的应用交易完整性验证:快速验证大量交易轻节点同步:SPV(简单支付验证)只需下载区块头状态证明:以太坊的状态树使用 Merkle Patricia Tree4. 零知识证明(Zero-Knowledge Proof)基本概念定义:证明者向验证者证明某个陈述为真,而不透露任何有用信息。zk-SNARKs(以太坊 ZK Rollup 使用):Succinct:证明体积小Non-interactive:无需交互ARgument of Knowledge:知识论证应用场景隐私交易示例:┌─────────────────────────────────────┐│ 证明:我知道一个秘密 x,使得 ││ hash(x) = 0xabc... ││ ││ 不透露:x 的具体值 │└─────────────────────────────────────┘面试要点理解哈希函数的单向性和抗碰撞性掌握公钥私钥的关系和数字签名原理能够解释 Merkle Tree 如何高效验证数据了解零知识证明的基本概念和应用知道不同区块链使用的具体算法(SHA-256 vs Keccak-256)
阅读 0·3月7日 12:04

什么是 DApp?请解释去中心化应用与传统应用的区别及开发架构

什么是 DApp?DApp(Decentralized Application,去中心化应用) 是运行在区块链网络上的应用程序,其后端代码运行在分布式节点上,而非中心化服务器。DApp 的核心特征根据以太坊官方定义,一个真正的 DApp 必须满足以下条件:| 特征 | 说明 | 重要性 ||------|------|--------|| 开源 | 代码公开透明,任何人可审查 | ⭐⭐⭐⭐⭐ || 去中心化 | 数据存储在区块链上,无单一控制点 | ⭐⭐⭐⭐⭐ || 激励机制 | 使用代币激励网络参与者 | ⭐⭐⭐⭐ || 共识机制 | 通过算法达成数据一致性 | ⭐⭐⭐⭐⭐ |DApp 与传统应用对比传统应用架构:┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ 前端 │ ←──→ │ 后端服务器 │ ←──→ │ 中心化数据库 ││ (Web/App) │ │ (API) │ │ (MySQL等) │└─────────────┘ └─────────────┘ └─────────────┘ ↑ 单一控制点,可被关闭DApp 架构:┌─────────────┐ ┌─────────────┐ ┌─────────────┐│ 前端 │ ←──→ │ 智能合约 │ ←──→ │ 区块链网络 ││ (Web/App) │ │ (Solidity) │ │ (分布式节点) │└─────────────┘ └─────────────┘ └─────────────┘ ↑ 不可篡改,永久运行详细对比表| 维度 | 传统应用 | DApp ||------|---------|------|| 数据存储 | 中心化服务器 | 区块链分布式存储 || 控制权 | 公司/组织控制 | 社区治理,无单一控制 || 停机风险 | 服务器故障可停机 | 只要网络存在就运行 || 数据修改 | 管理员可修改 | 不可篡改 || 用户隐私 | 需信任第三方 | 自主控制数据 || 审查抗性 | 容易被审查封禁 | 抗审查 || 交易速度 | 快(毫秒级) | 慢(秒级到分钟级) || 用户体验 | 流畅 | 需支付 Gas 费,门槛高 || 开发成本 | 相对较低 | 智能合约审计成本高 |DApp 开发架构三层架构模型┌─────────────────────────────────────────┐│ 前端层 (Frontend) ││ • React/Vue/Next.js ││ • Web3.js / Ethers.js ││ • 钱包连接(MetaMask/WalletConnect) │└─────────────────────────────────────────┘ ↓┌─────────────────────────────────────────┐│ 交互层 (Interaction) ││ • 智能合约 ABI ││ • RPC 节点(Infura/Alchemy) ││ • IPFS(去中心化存储) │└─────────────────────────────────────────┘ ↓┌─────────────────────────────────────────┐│ 数据层 (Data Layer) ││ • 智能合约(Solidity/Rust) ││ • 区块链网络(Ethereum/Polygon) ││ • The Graph(索引协议) │└─────────────────────────────────────────┘核心技术栈前端开发:// Web3.js 连接钱包示例import Web3 from 'web3';const connectWallet = async () => { if (window.ethereum) { const web3 = new Web3(window.ethereum); await window.ethereum.request({ method: 'eth_requestAccounts' }); const accounts = await web3.eth.getAccounts(); return accounts[0]; }};// 调用智能合约const contract = new web3.eth.Contract(ABI, contractAddress);const result = await contract.methods.getBalance().call();智能合约开发:// SPDX-License-Identifier: MITpragma solidity ^0.8.0;contract MyDApp { mapping(address => uint256) public balances; event Deposit(address indexed user, uint256 amount); function deposit() public payable { balances[msg.sender] += msg.value; emit Deposit(msg.sender, msg.value); } function getBalance() public view returns (uint256) { return balances[msg.sender]; }}数据索引(The Graph):# subgraph/schema.graphqltype Deposit @entity { id: ID! user: Bytes! amount: BigInt! timestamp: BigInt!}DApp 开发流程1. 需求分析 ↓2. 智能合约设计 • 编写 Solidity 代码 • 本地测试(Hardhat/Truffle) ↓3. 安全审计 • 静态分析(Slither) • 人工审计 ↓4. 合约部署 • 测试网验证 • 主网部署 ↓5. 前端开发 • UI/UX 设计 • Web3 集成 ↓6. 测试上线 • 功能测试 • 安全测试主流 DApp 类型| 类型 | 代表应用 | 特点 ||------|---------|------|| DeFi | Uniswap、Aave | 去中心化金融协议 || NFT | OpenSea、Blur | 非同质化代币交易 || GameFi | Axie Infinity、StepN | 游戏+金融结合 || SocialFi | Lens Protocol | 去中心化社交 || DAO | Aragon、Snapshot | 去中心化自治组织 |面试要点理解 DApp 与传统应用的本质区别掌握 Web3.js/Ethers.js 的基本使用了解智能合约与前端交互的方式熟悉主流钱包连接方案知道 DApp 开发的安全注意事项了解 The Graph 等索引方案的作用
阅读 0·3月6日 21:56

什么是区块链技术?请解释其核心特点和去中心化原理

什么是区块链技术?区块链(Blockchain) 是一种分布式账本技术,通过密码学方法将数据区块按时间顺序链接成链式结构,实现去中心化的数据存储和验证。核心特点去中心化(Decentralization)没有单一控制节点,数据分布在网络中的所有节点上每个节点都保存完整的账本副本消除了单点故障风险不可篡改性(Immutability)一旦数据被写入区块,几乎不可能被修改通过哈希指针和共识机制保证数据完整性任何篡改都会导致后续所有区块的哈希值变化透明性(Transparency)所有交易记录对网络参与者公开可见每个节点都可以验证交易的有效性提高了系统的信任度安全性(Security)使用密码学技术保护数据通过共识机制防止恶意攻击51%攻击难度极高去中心化原理传统中心化系统:用户 → 中心服务器 → 数据库区块链去中心化系统:用户A → 节点网络 ← 用户B ↓ ↓ ↓ 节点1 节点2 节点3 ↓ ↓ ↓ 完整账本副本(分布式存储)工作流程交易发起:用户创建并广播交易交易验证:网络节点验证交易合法性区块打包:矿工/验证者将交易打包成区块共识达成:网络通过共识机制确认区块区块添加:新区块被添加到链上,全网同步应用场景加密货币(Bitcoin、Ethereum)供应链管理数字身份认证智能合约去中心化金融(DeFi)面试要点理解分布式账本与中心化数据库的区别掌握哈希函数在区块链中的作用了解不同共识机制的优缺点能够解释拜占庭将军问题及其解决方案
阅读 0·3月6日 21:55

什么是智能合约?请解释 Solidity 智能合约的执行原理和常见安全漏洞

什么是智能合约?智能合约(Smart Contract) 是一种运行在区块链上的自动执行的计算机程序,当预设条件被满足时,合约会自动执行相应的操作,无需第三方中介。核心特点自动执行:条件触发后自动运行,无需人工干预不可篡改:部署后代码无法修改,保证执行结果可信透明公开:合约代码对所有网络参与者可见去信任化:通过代码而非信任来执行协议Solidity 智能合约执行原理1. 合约部署流程// 示例:简单的存储合约pragma solidity ^0.8.0;contract SimpleStorage { uint256 private storedData; event DataChanged(uint256 newValue); function set(uint256 x) public { storedData = x; emit DataChanged(x); } function get() public view returns (uint256) { return storedData; }}部署步骤:编译:Solidity 代码编译为 EVM 字节码交易创建:创建部署交易,包含字节码矿工打包:交易被矿工打包进区块合约创建:EVM 执行创建操作,分配合约地址状态存储:合约代码和初始状态存储在区块链上2. EVM 执行模型交易发起 → Gas 费用检查 → EVM 执行 ↓ 栈(Stack)操作 内存(Memory)操作 存储(Storage)操作 ↓ 状态更新或回滚 ↓ 交易收据生成Gas 机制:每笔操作消耗 Gas,防止无限循环Gas Price × Gas Limit = 最大交易费用Gas 不足时交易回滚,但已消耗的 Gas 不退还3. 合约调用方式| 调用方式 | 特性 | 使用场景 ||---------|------|---------|| call | 不创建新上下文,可指定 Gas | 调用外部合约 || delegatecall | 在当前合约上下文执行 | 代理合约模式 || staticcall | 只读调用,不修改状态 | 查询操作 |常见安全漏洞1. 重入攻击(Reentrancy Attack)漏洞代码:function withdraw() public { uint256 amount = balances[msg.sender]; require(amount > 0); (bool success, ) = msg.sender.call{value: amount}(""); // 外部调用 require(success); balances[msg.sender] = 0; // 状态更新在后}攻击原理:攻击者合约在接收 ETH 时触发 fallback 函数fallback 函数再次调用 withdraw形成递归调用,重复提取资金防护措施:function withdraw() public { uint256 amount = balances[msg.sender]; require(amount > 0); balances[msg.sender] = 0; // 先更新状态 (bool success, ) = msg.sender.call{value: amount}(""); require(success);}2. 整数溢出/下溢(Integer Overflow/Underflow)漏洞代码:function transfer(address to, uint256 amount) public { balances[msg.sender] -= amount; // 可能下溢 balances[to] += amount; // 可能溢出}防护措施:使用 Solidity 0.8.0+(内置溢出检查)或使用 SafeMath 库using SafeMath for uint256;function transfer(address to, uint256 amount) public { balances[msg.sender] = balances[msg.sender].sub(amount); balances[to] = balances[to].add(amount);}3. 访问控制漏洞漏洞代码:function destroy() public { selfdestruct(payable(msg.sender)); // 任何人可调用}防护措施:address public owner;modifier onlyOwner() { require(msg.sender == owner, "Not owner"); _;}function destroy() public onlyOwner { selfdestruct(payable(owner));}4. 前端运行攻击(Front-running)攻击原理:攻击者监控内存池(mempool)中的待处理交易支付更高 Gas Price 抢先执行类似交易常见于 DEX 交易和拍卖场景防护措施:提交哈希承诺,延迟揭示使用提交-揭示模式(Commit-Reveal)安全最佳实践使用成熟的安全库:OpenZeppelin Contracts代码审计:部署前进行专业安全审计形式化验证:使用工具验证合约逻辑测试覆盖:编写全面的单元测试和集成测试权限最小化:遵循最小权限原则紧急暂停:实现可暂停功能应对紧急情况面试要点理解 EVM 的执行模型和 Gas 机制掌握重入攻击的原理和防护方法了解常见的安全漏洞类型熟悉 OpenZeppelin 等安全库的使用能够设计安全的合约架构
阅读 0·3月6日 21:55

区块链共识机制有哪些?详细对比 PoW、PoS 和 DPoS 的优缺点

区块链共识机制概述共识机制(Consensus Mechanism) 是区块链网络中节点就区块有效性达成一致意见的算法,是区块链安全性和去中心化的核心保障。主要共识机制类型1. PoW(Proof of Work,工作量证明)原理:矿工通过计算复杂的哈希难题来竞争记账权最先找到正确哈希值的矿工获得奖励比特币(Bitcoin)采用的共识机制优点:✅ 安全性极高,51%攻击成本巨大✅ 去中心化程度高,任何人都可以参与挖矿✅ 经过比特币长期验证,技术成熟稳定缺点:❌ 能源消耗巨大,不环保❌ 交易处理速度慢(比特币约 7 TPS)❌ 算力集中化风险(矿池垄断)PoW 挖矿流程:交易收集 → 构建区块头 → 计算 Nonce ↓SHA-256 哈希计算 ↓哈希值 < 目标难度? ↓是 → 广播区块,获得奖励否 → 修改 Nonce,重新计算2. PoS(Proof of Stake,权益证明)原理:验证者根据持有的代币数量和时长获得记账权不需要消耗算力,而是"质押"代币以太坊 2.0(Ethereum 2.0)采用的机制优点:✅ 能源效率高,环保✅ 交易速度快,可扩展性好✅ 经济安全性(攻击者需要持有大量代币)缺点:❌ "富者愈富"问题,财富集中化❌ 初始分配不公平可能影响安全性❌ 长程攻击(Long-range Attack)风险PoS 验证流程:质押代币 → 成为验证者 ↓系统随机选择出块者 ↓验证交易并打包区块 ↓获得区块奖励(交易费) ↓作恶惩罚:削减质押资金3. DPoS(Delegated Proof of Stake,委托权益证明)原理:代币持有者投票选举出一定数量的代表(见证人)由选出的代表轮流记账EOS、TRON 等采用此机制优点:✅ 交易速度极快(EOS 可达 3000+ TPS)✅ 能源效率极高✅ 治理机制更灵活缺点:❌ 中心化程度较高(只有少量节点出块)❌ 投票参与度可能较低❌ 见证人可能串通作恶三种机制对比表| 特性 | PoW | PoS | DPoS ||------|-----|-----|------|| 代表项目 | Bitcoin | Ethereum 2.0 | EOS || 能源消耗 | 极高 | 低 | 极低 || 交易速度 | 慢(7 TPS) | 中(1000+ TPS) | 快(3000+ TPS) || 去中心化 | 高 | 中高 | 中 || 安全性 | 极高 | 高 | 中 || 硬件要求 | 专用矿机 | 普通服务器 | 高性能服务器 |其他共识机制PBFT(实用拜占庭容错):联盟链常用,如 Hyperledger FabricPoA(权威证明):基于身份验证,适合私有链PoH(历史证明):Solana 采用,通过时间戳提高效率面试要点理解不同共识机制的适用场景能够分析安全性与效率的权衡了解以太坊从 PoW 转向 PoS 的原因掌握拜占庭容错的基本概念
阅读 0·3月6日 21:55

区块链面临哪些安全威胁?详解 51% 攻击、双花攻击和智能合约漏洞

区块链安全概述区块链虽然具有密码学保护,但仍面临多种安全威胁。理解这些威胁对于开发和运营安全的区块链应用至关重要。主要安全威胁分类区块链安全威胁├── 网络层攻击│ ├── 51% 攻击│ ├── 双花攻击│ └── Eclipse 攻击├── 智能合约漏洞│ ├── 重入攻击│ ├── 整数溢出│ ├── 访问控制漏洞│ └── 前端运行攻击└── 应用层攻击 ├── 钓鱼攻击 ├── 私钥泄露 └── 交易所被黑1. 51% 攻击(Majority Attack)攻击原理当攻击者控制网络超过 50% 的算力(PoW)或质押代币(PoS)时,可以:阻止交易确认撤销已确认交易阻止其他矿工挖矿正常网络: 51% 攻击:┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐ ┌─────┐│ 20% │ │ 30% │ │ 50% │ │ 20% │ │ 30% │ │ 50% │ ← 攻击者控制│ 矿工A│ │ 矿工B│ │ 矿工C│ │ 矿工A│ │ 矿工B│ │ 攻击者│└─────┘ └─────┘ └─────┘ └─────┘ └─────┘ └─────┘ ↓ 可以决定哪个区块被确认实际案例| 时间 | 项目 | 损失 ||------|------|------|| 2018-05 | Bitcoin Gold | 1800 万美元 || 2019-01 | Ethereum Classic | 110 万美元 || 2020-08 | Ethereum Classic | 再次遭受攻击 |防护措施✅ 增加网络总算力/质押量✅ 提高确认数要求✅ 实施检查点机制✅ 采用混合共识机制2. 双花攻击(Double Spending)攻击原理同一笔资金被花费两次,利用区块链确认延迟实现。双花攻击流程:攻击者 ──┬──→ 商家A:支付 10 BTC 购买商品(交易A) │ └──→ 商家B:支付同样的 10 BTC(交易B)步骤:1. 广播交易A到网络2. 商家A看到交易后发货3. 攻击者快速广播交易B4. 攻击者控制矿工优先打包交易B5. 交易A被孤立,成为孤儿交易6. 攻击者获得商品,资金未实际支出攻击类型| 类型 | 描述 | 难度 ||------|------|------|| Race Attack | 同时广播两个冲突交易 | 低 || Finney Attack | 矿工自己挖到区块后广播 | 中 || Vector76 | 结合 Race 和 Finney | 中 || 51% Attack | 控制多数算力重组链 | 高 |防护措施✅ 等待多个确认(比特币建议 6 个确认)✅ 使用支付处理器检测异常✅ 高价值交易要求更多确认3. Eclipse 攻击(日蚀攻击)攻击原理攻击者控制受害节点的所有网络连接,使其只能看到攻击者控制的区块链视图。正常网络连接: Eclipse 攻击后:┌─────┐ ┌─────┐│ 节点 │──┬── 诚实节点1 │ 节点 │── 攻击者节点1│ │ ├── 诚实节点2 → │ │── 攻击者节点2│ │ └── 诚实节点3 │ │── 攻击者节点3└─────┘ └─────┘ (看到真实网络) (只能看到攻击者的链)攻击后果矿工在孤立链上浪费算力商家接受无效交易双花攻击更容易实施防护措施✅ 限制单一 IP 连接数✅ 随机选择对等节点✅ 使用种子节点硬编码4. 智能合约安全漏洞重入攻击(Reentrancy)The DAO 事件(2016):损失 360 万 ETH// 漏洞代码function withdraw() public { uint256 amount = balances[msg.sender]; require(amount > 0); (bool success, ) = msg.sender.call{value: amount}(""); // 外部调用 require(success); balances[msg.sender] = 0; // 状态更新在后}// 攻击合约contract Attacker { function attack() external { victim.withdraw(); // 触发重入 } receive() external payable { if (address(victim).balance >= amount) { victim.withdraw(); // 递归调用 } }}防护措施:检查-生效-交互(Checks-Effects-Interactions)模式使用重入锁(ReentrancyGuard)先更新状态再转账整数溢出/下溢// 漏洞代码(Solidity < 0.8)function transfer(address to, uint256 amount) public { balances[msg.sender] -= amount; // 下溢! balances[to] += amount;}// 攻击:amount > balances[msg.sender] 时// balances[msg.sender] 变成极大值防护措施:使用 Solidity 0.8+(内置检查)使用 SafeMath 库5. 前端运行攻击(Front-running)攻击原理攻击者监控内存池(mempool),发现有利可图的交易后,支付更高 Gas Price 抢先执行。攻击流程:1. 用户广播交易:在 DEX 上购买代币A Gas Price: 20 Gwei2. 攻击者监控到交易3. 攻击者广播相同交易 Gas Price: 30 Gwei ← 更高,优先打包4. 攻击者交易先执行,代币价格上涨5. 用户交易后执行,以更高价格买入6. 攻击者卖出获利防护措施✅ 使用提交-揭示模式(Commit-Reveal)✅ 设置滑点保护✅ 使用 Flashbots 等私有内存池安全最佳实践开发层面代码审计:部署前进行专业审计形式化验证:使用工具验证关键逻辑测试覆盖:单元测试 + 集成测试 + 模糊测试使用标准库:OpenZeppelin Contracts漏洞赏金:建立 Bug Bounty 计划运营层面多签钱包:关键操作需要多方确认时间锁:重要操作延迟执行监控告警:实时监控异常交易应急响应:制定紧急暂停和资金恢复方案面试要点理解 51% 攻击的原理和后果掌握双花攻击的类型和防护熟悉智能合约常见漏洞及防护措施了解前端运行攻击的机制知道区块链安全最佳实践能够分析真实安全事件(如 The DAO)
阅读 0·3月6日 21:55

什么是跨链技术?详解原子交换、中继链和桥接方案的工作原理

跨链技术背景区块链孤岛问题:不同区块链网络相互独立,无法直接通信和交换价值,形成了"价值孤岛"。区块链孤岛:┌──────────┐ ┌──────────┐ ┌──────────┐│ 以太坊 │ │ 比特币 │ │ Solana ││ 生态 │ × │ 生态 │ × │ 生态 ││ ERC-20 │ │ BTC │ │ SPL │└──────────┘ └──────────┘ └──────────┘ ↑ ↑ ↑ 无法直接互操作,需要跨链桥跨链技术分类跨链技术├── 同构跨链(同类型区块链)│ ├── 中继链(Relay Chain)│ └── 侧链桥接│└── 异构跨链(不同类型区块链) ├── 哈希时间锁定合约(HTLC) ├── 公证人机制(Notary) ├── 侧链/中继链 └── 跨链桥(Bridge)1. 哈希时间锁定合约(HTLC - Hash Time-Locked Contracts)原理利用哈希锁和时间锁实现无需信任第三方的原子交换。原子交换流程(Alice 用 BTC 换 Bob 的 ETH):步骤1:Alice 生成随机数 S,计算哈希 H = hash(S)步骤2:Alice 创建 BTC 合约 ┌─────────────────────────────────────┐ │ 锁定 1 BTC,条件: │ │ • 知道 S 使得 hash(S) = H │ │ • 或 24小时后退回给 Alice │ └─────────────────────────────────────┘步骤3:Bob 看到 H 后,创建 ETH 合约 ┌─────────────────────────────────────┐ │ 锁定等值 ETH,条件: │ │ • 知道 S 使得 hash(S) = H │ │ • 或 12小时后退回给 Bob │ └─────────────────────────────────────┘ (时间必须短于 Alice 的合约)步骤4:Alice 用 S 解锁 Bob 的 ETH步骤5:Bob 看到 S 后,解锁 Alice 的 BTC结果:要么双方都成功交换,要么都失败(原子性)代码示例contract HTLC { address public alice; address public bob; bytes32 public hashLock; uint256 public timeout; bool public claimed; constructor(address _bob, bytes32 _hashLock, uint256 _timeout) payable { alice = msg.sender; bob = _bob; hashLock = _hashLock; timeout = _timeout; } // Bob 用原像解锁 function claim(string memory secret) public { require(msg.sender == bob, "Not bob"); require(keccak256(abi.encodePacked(secret)) == hashLock, "Invalid secret"); require(!claimed, "Already claimed"); claimed = true; payable(bob).transfer(address(this).balance); } // 超时后 Alice 退款 function refund() public { require(msg.sender == alice, "Not alice"); require(block.timestamp >= timeout, "Not timed out"); require(!claimed, "Already claimed"); payable(alice).transfer(address(this).balance); }}优点:✅ 无需信任第三方✅ 原子性保证缺点:❌ 双方需要同时在线❌ 仅支持相同哈希算法的链❌ 用户体验复杂2. 中继链(Relay Chain)原理通过专门的中继链连接多个平行链,实现跨链通信。Polkadot 架构示例: ┌───────────────┐ │ 中继链 │ │ (Relay Chain) │ │ │ │ • 共识安全 │ │ • 跨链消息路由 │ └───────┬───────┘ │ ┌───────────────────┼───────────────────┐ │ │ │ ┌────┴────┐ ┌────┴────┐ ┌────┴────┐ │ 平行链A │ │ 平行链B │ │ 平行链C │ │ │ │ │ │ │ │ DeFi │←───────→│ NFT │←───────→│ 游戏 │ │ 应用 │ XCMP │ 市场 │ XCMP │ 应用 │ └─────────┘ └─────────┘ └─────────┘XCMP(跨链消息传递)跨链消息流程:平行链A ──┬── 生成跨链消息 ├── 提交到中继链 ├── 中继链验证并路由 ├── 平行链B 接收消息 └── 执行相应操作代表项目:Polkadot、Cosmos(IBC 协议)优点:✅ 安全性高(共享中继链安全)✅ 可扩展性好缺点:❌ 架构复杂❌ 仅支持同构链3. 跨链桥(Cross-chain Bridge)原理通过锁定-铸造(Lock-Mint)或销毁-释放(Burn-Unlock)机制实现资产跨链。跨链桥工作流程(以太坊 → BSC):1. 锁定阶段 用户 ──发送 10 ETH──→ 以太坊桥合约 ↓ 锁定 ETH ↓ 生成锁定证明2. 中继阶段 验证者/中继者 ──监控并传递证明──→ BSC 桥合约3. 铸造阶段 BSC 桥合约 ──验证证明──→ 铸造 10 包装 ETH(WETH) ↓ 发送给用户反向流程(BSC → 以太坊):销毁 WETH ──→ 释放原始 ETH桥接方案类型| 类型 | 机制 | 代表项目 | 安全性 ||------|------|----------|--------|| 托管桥 | 中心化机构托管资产 | WBTC | ⭐⭐ || 多签桥 | 多签验证者集 | Ronin | ⭐⭐⭐ || 轻客户端桥 | 链上验证区块头 | Rainbow Bridge | ⭐⭐⭐⭐ || 乐观桥 | 欺诈证明机制 | Nomad | ⭐⭐⭐ || ZK 桥 | 零知识证明 | zkBridge | ⭐⭐⭐⭐⭐ |跨链桥安全事件| 时间 | 项目 | 损失 | 原因 ||------|------|------|------|| 2022-03 | Ronin | 6.25 亿美元 | 私钥泄露 || 2022-10 | BNB Chain | 5.7 亿美元 | 合约漏洞 || 2021-08 | Poly Network | 6.1 亿美元 | 合约漏洞(后归还)|4. LayerZero 全链互操作协议原理结合 Oracle 和 Relayer 实现无需信任假设的跨链通信。LayerZero 架构:链A LayerZero 链B┌─────────┐ ┌───────────┐ ┌─────────┐│ 应用合约 │──────────→│ 端点合约 │ │ 端点合约 │└────┬────┘ └─────┬─────┘ └────┬────┘ │ │ │ │ ┌────────────┼────────────┐ │ │ ↓ ↓ ↓ │ │ ┌────────┐ ┌────────┐ ┌────────┐ │ └───→│ Oracle │ │Relayer │ │验证合约 │←──┘ │(Chainlink)│(独立中继)│ │ │ └────────┘ └────────┘ └────────┘核心创新:Oracle 提供区块头Relayer 提供交易证明两者独立,防止合谋跨链方案对比| 方案 | 信任模型 | 速度 | 成本 | 复杂度 | 适用场景 ||------|----------|------|------|--------|----------|| HTLC | 无需信任 | 慢 | 低 | 高 | P2P 原子交换 || 中继链 | 共享安全 | 快 | 中 | 高 | 同构链生态 || 托管桥 | 中心化 | 快 | 低 | 低 | 简单资产转移 || 多签桥 | 多数诚实 | 快 | 中 | 中 | 主流资产桥接 || ZK 桥 | 密码学保证 | 快 | 高 | 高 | 高安全性需求 || LayerZero | 双独立方 | 快 | 中 | 中 | 通用消息传递 |面试要点理解区块链孤岛问题的本质掌握 HTLC 的原子交换原理了解中继链的工作机制熟悉跨链桥的锁定-铸造模式知道不同跨链方案的权衡了解跨链桥的安全风险能够分析主流跨链项目的架构
阅读 0·3月6日 21:44