<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Web3 on 阿珏酱のBlog</title>
    <link>https://zh.moejue.cn/tags/web3/</link>
    <description>Recent content from 阿珏酱のBlog</description>
    <generator>Hugo</generator>
    <language>zh-cn</language>
    
    <managingEditor>xxx@example.com (MoeJue)</managingEditor>
    <webMaster>xxx@example.com (MoeJue)</webMaster>
    
    <copyright>本博客所有文章除特别声明外，均采用 BY-NC-SA 许可协议。转载请注明出处！</copyright>
    
    <lastBuildDate>Sat, 10 Jan 2026 14:02:35 +0000</lastBuildDate>
    
    
    <atom:link href="https://zh.moejue.cn/tags/web3/index.xml" rel="self" type="application/rss&#43;xml" />
    

    
    

    <item>
      <title>Web3 链上红包 DApp</title>
      <link>https://zh.moejue.cn/posts/303/</link>
      <pubDate>Sat, 10 Jan 2026 14:02:35 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/303/</guid>
      <description>
        <![CDATA[<h1>Web3 链上红包 DApp</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>这是一个<strong>100%去中心化</strong>的区块链红包应用。用户可以连接钱包，设定金额和数量发送红包，然后通过链接分享给他人领取。所有数据和操作都基于区块链，完全不需要中心化服务器，整个过程安全、透明、可追溯。</p>
<p>如果你感兴趣，可以在 GitHub 上看看我的代码：<a href="https://github.com/iAJue/redpacket-dapp">redpacket‑dapp</a></p>
<h2 id="功能亮点">
<a class="header-anchor" href="#%e5%8a%9f%e8%83%bd%e4%ba%ae%e7%82%b9"></a>
功能亮点
</h2><ul>
<li>🧧 <strong>发送红包</strong>: 连接钱包后，设置金额和数量发送红包到区块链</li>
<li>🎁 <strong>领取红包</strong>: 通过分享链接，别人可以连接钱包直接从区块链领取红包</li>
<li>🔗 <strong>智能合约</strong>: 使用 Solidity 编写的安全智能合约处理所有逻辑</li>
<li>🌐 <strong>多链支持</strong>: 支持本地测试网和 BSC 测试网</li>
<li>💼 <strong>Web3 集成</strong>: 使用 MetaMask 钱包连接</li>
<li>🚀 <strong>完全去中心化</strong>: 没有后端服务器，所有数据存储在区块链</li>
</ul>
<h2 id="技术栈">
<a class="header-anchor" href="#%e6%8a%80%e6%9c%af%e6%a0%88"></a>
技术栈
</h2><ul>
<li><strong>前端</strong>：React 19、React Router 6、TypeScript、Vite、Ethers v6</li>
<li><strong>合约层</strong>：Hardhat、Solidity 0.8.x</li>
<li><strong>工具</strong>：ESLint、Prettier</li>
<li><strong>不需要后端</strong>: 零依赖服务器 ❌</li>
</ul>
<h2 id="快速启动">
<a class="header-anchor" href="#%e5%bf%ab%e9%80%9f%e5%90%af%e5%8a%a8"></a>
快速启动
</h2><pre><code># 1. 安装项目依赖
npm install
cd react-dapp &amp;&amp; npm install &amp;&amp; cd ..

# 2. 启动本地区块链节点
npm run node

# 3. 编译智能合约
npx hardhat compile

# 4. 部署智能合约
npm run deploy

# 5. 启动前端
npm run frontend
</code></pre>
<h2 id="目录结构">
<a class="header-anchor" href="#%e7%9b%ae%e5%bd%95%e7%bb%93%e6%9e%84"></a>
目录结构
</h2><pre><code>redpacket-web3/
├─ contracts/                # Solidity 智能合约
│  └─ RedPacket.sol
├─ react-dapp/               # React + Vite 前端
│  ├─ src/
│  │  ├─ components/         # 通用组件（钱包按钮、创建表单等）
│  │  ├─ config/             # ABI、合约地址配置
│  │  ├─ hooks/              # 自定义 hooks（useWallet）
│  │  ├─ pages/              # 页面（Home、ClaimPacket）
│  │  ├─ styles/             # 全局样式
│  │  ├─ utils/              # Web3 工具函数
│  │  └─ App.tsx             # 路由与布局
│  ├─ .env.example           # 前端所需的环境变量说明
│  └─ package.json
├─ scripts/
│  └─ deploy.js              # Hardhat 部署脚本（会自动写入前端配置）
├─ hardhat.config.js
└─ package.json              # 根目录脚本（Hardhat + 前端一键启动）
</code></pre>
<h2 id="使用指南">
<a class="header-anchor" href="#%e4%bd%bf%e7%94%a8%e6%8c%87%e5%8d%97"></a>
使用指南
</h2><h3 id="创建红包">
<a class="header-anchor" href="#%e5%88%9b%e5%bb%ba%e7%ba%a2%e5%8c%85"></a>
创建红包
</h3><ol>
<li>打开前端并点击右上角「连接钱包」。</li>
<li>填写红包总金额与份数，应用会在前端随机拆分金额。</li>
<li>提交后在 MetaMask 中确认交易，等待区块确认。</li>
<li>成功后可复制系统生成的领取链接，分享给朋友。</li>
</ol>
<h3 id="领取红包">
<a class="header-anchor" href="#%e9%a2%86%e5%8f%96%e7%ba%a2%e5%8c%85"></a>
领取红包
</h3><ol>
<li>打开分享链接（URL 带有 <code>/claim/{packetId}</code>）。</li>
<li>同样先连接钱包，然后点击「点击领取」。</li>
<li>签名确认后等待区块打包，页面会显示结果与剩余份数。</li>
</ol>
<h2 id="环境变量">
<a class="header-anchor" href="#%e7%8e%af%e5%a2%83%e5%8f%98%e9%87%8f"></a>
环境变量
</h2><ul>
<li><code>dapp/.env</code>（开发环境会自动忽略，请参考 <code>.env.example</code>）
<ul>
<li><code>VITE_RPC_URL</code>：前端直连节点 RPC，默认为 <code>http://127.0.0.1:8545</code></li>
<li><code>VITE_CONTRACT_ADDRESS</code>：可覆盖部署脚本写入的地址</li>
<li><code>VITE_CHAIN_ID</code>：前端提示使用的链 ID（十六进制）</li>
</ul>
</li>
<li><code>root/.env</code>：若需要在 Hardhat 中引用私钥或 BSC RPC，可继续沿用原有写法。</li>
</ul>
<h2 id="智能合约redpacketsol">
<a class="header-anchor" href="#%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6redpacketsol"></a>
智能合约（RedPacket.sol）
</h2><p>核心方法：</p>
        
        <hr><p>本文2026-01-10首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2026-01-10</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>基于Web3.0的区块链图片上传</title>
      <link>https://zh.moejue.cn/posts/201/</link>
      <pubDate>Mon, 17 Jun 2024 12:57:43 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/201/</guid>
      <description>
        <![CDATA[<h1>基于Web3.0的区块链图片上传</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>开始前，我们先简单了解一下基本的概念，我大致归纳为以下几个点 <a href="https://www.cnblogs.com/Ajue/p/18252827">什么是Web3.0，和区块链又有什么关系？</a>（上回的文章不就派上用场了）</p>
<p>需求：开发一个基于Python的Web 3.0图片上传系统。这个系统将允许用户上传图片，并将图片存储在去中心化的网络上，同时记录交易信息在区块链上。 本就是写着玩的，想过要写成用户认证文件操作集成全套管理的，让他‘终将成为图片上传服务的最终解决方案’ 实际下来却发现不是很实际，就作罢了，奈何我一直以来对图片这么执着</p>
<h3 id="步骤概述">
<a class="header-anchor" href="#%e6%ad%a5%e9%aa%a4%e6%a6%82%e8%bf%b0"></a>
步骤概述
</h3><ol>
<li><strong>环境设置</strong>：使用Python开发，安装必要的Python库。</li>
<li><strong>IPFS集成</strong>：将图片上传到IPFS，获取图片的CID（Content Identifier）。</li>
<li><strong>区块链集成</strong>：将IPFS CID记录在区块链上。</li>
<li><strong>Web接口</strong>：使用Flask创建一个Web接口，允许用户上传图片。</li>
</ol>
<h3 id="详细步骤">
<a class="header-anchor" href="#%e8%af%a6%e7%bb%86%e6%ad%a5%e9%aa%a4"></a>
详细步骤
</h3><h4 id="1-环境设置">
<a class="header-anchor" href="#1-%e7%8e%af%e5%a2%83%e8%ae%be%e7%bd%ae"></a>
1. 环境设置
</h4><p>安装所需的Python库：</p>
<pre tabindex="0"><code>pip install flask web3 ipfshttpclient
</code></pre><h4 id="2-ipfs集成">
<a class="header-anchor" href="#2-ipfs%e9%9b%86%e6%88%90"></a>
2. IPFS集成
</h4><p>IPFS（InterPlanetary File System）是一种点对点的文件存储协议。我们可以使用<code>ipfshttpclient</code>库来与IPFS网络交互。</p>
<p>首先，确保你已经安装并运行了IPFS节点。如果还没有安装IPFS，可以在<a href="https://ipfs.io">IPFS官网</a>找到安装指南。</p>
<p>以下是上传图片到IPFS的代码示例：</p>
<pre tabindex="0"><code>import ipfshttpclient

def upload_to_ipfs(file_path):
    client = ipfshttpclient.connect(&#39;/ip4/127.0.0.1/tcp/5001&#39;)
    res = client.add(file_path)
    return res[&#39;Hash&#39;]
</code></pre><h4 id="3-区块链集成">
<a class="header-anchor" href="#3-%e5%8c%ba%e5%9d%97%e9%93%be%e9%9b%86%e6%88%90"></a>
3. 区块链集成
</h4><p>使用<code>web3.py</code>库将IPFS CID记录到区块链上。我们将以太坊（Ethereum）作为示例区块链。</p>
<p>以下是一个简单的智能合约示例，用于存储IPFS CID：</p>
<pre tabindex="0"><code>pragma solidity ^0.8.0;

contract IPFSStorage {
    mapping(address =&gt; string[]) public userCIDs;

    function storeCID(string memory cid) public {
        userCIDs[msg.sender].push(cid);
    }

    function getCIDs() public view returns (string[] memory) {
        return userCIDs[msg.sender];
    }
}
</code></pre><p>编译并部署该合约后，使用以下Python代码与智能合约交互：</p>
        
        <hr><p>本文2024-06-17首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-07-06</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
    

    <item>
      <title>什么是Web3.0，和区块链又有什么关系？</title>
      <link>https://zh.moejue.cn/posts/202/</link>
      <pubDate>Mon, 17 Jun 2024 12:59:22 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/202/</guid>
      <description>
        <![CDATA[<h1>什么是Web3.0，和区块链又有什么关系？</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <p>又是一个莫名其妙的词语的新起-。- 我大致归纳为以下几个点</p>
<h2 id="什么是web30">
<a class="header-anchor" href="#%e4%bb%80%e4%b9%88%e6%98%afweb30"></a>
什么是web3.0
</h2><p>Web 3.0（Web3）是下一代互联网的发展方向，旨在创建一个更加去中心化、用户控制和数据保护的网络环境。与之前的Web 1.0（静态网页）和Web 2.0（动态、交互式网页和社交媒体）不同，Web 3.0的核心理念和技术包括以下几个方面：</p>
<h3 id="去中心化">
<a class="header-anchor" href="#%e5%8e%bb%e4%b8%ad%e5%bf%83%e5%8c%96"></a>
去中心化：
</h3><ul>
<li>区块链技术：Web 3.0的核心是区块链技术，它提供了一个去中心化的账本，记录所有的交易和数据变化。这意味着数据不再由单一的中央服务器控制，而是分布在多个节点上。</li>
<li>分布式应用（DApps）：这些应用程序运行在区块链网络上，没有中心化的控制者。DApps的用户可以直接进行交易和互动，而无需通过中介机构。</li>
</ul>
<h3 id="用户控制和数据保护">
<a class="header-anchor" href="#%e7%94%a8%e6%88%b7%e6%8e%a7%e5%88%b6%e5%92%8c%e6%95%b0%e6%8d%ae%e4%bf%9d%e6%8a%a4"></a>
用户控制和数据保护：
</h3><ul>
<li>用户主权身份：在Web 3.0中，用户可以完全控制自己的数字身份和数据。通过加密技术，用户可以决定谁可以访问他们的数据以及如何使用这些数据。</li>
<li>数据所有权：用户的数据存储在去中心化的网络上，用户拥有数据的所有权，而不是由大公司集中管理和控制。</li>
</ul>
<h3 id="智能合约">
<a class="header-anchor" href="#%e6%99%ba%e8%83%bd%e5%90%88%e7%ba%a6"></a>
智能合约：
</h3><ul>
<li>
<p>自动执行协议：智能合约是在区块链上运行的自动化协议，当满足特定条件时自动执行。这种技术可以用于各种场景，如金融交易、供应链管理和法律合同。 互操作性：</p>
</li>
<li>
<p>跨平台和跨链技术：Web 3.0致力于实现不同区块链和分布式网络之间的互操作性，使得数据和资产可以在不同平台之间无缝转移。</p>
</li>
</ul>
<h3 id="去信任化和透明度">
<a class="header-anchor" href="#%e5%8e%bb%e4%bf%a1%e4%bb%bb%e5%8c%96%e5%92%8c%e9%80%8f%e6%98%8e%e5%ba%a6"></a>
去信任化和透明度：
</h3><ul>
<li>无信任机制：Web 3.0通过区块链技术实现了无信任机制，即参与者无需互相信任或依赖第三方中介，就能进行安全的交易和互动。</li>
<li>透明性：所有交易和数据变更记录在区块链上，公开透明且不可篡改，提高了信任度和安全性。</li>
</ul>
<h3 id="web-30的应用场景">
<a class="header-anchor" href="#web-30%e7%9a%84%e5%ba%94%e7%94%a8%e5%9c%ba%e6%99%af"></a>
Web 3.0的应用场景
</h3><ol>
<li>去中心化金融（DeFi）：通过智能合约和区块链技术，提供无需中介的金融服务，如借贷、交易和投资。</li>
<li>数字身份：用户可以创建和管理自己的数字身份，控制个人数据的访问和使用。</li>
<li>供应链管理：通过区块链技术，实现供应链的透明和可追溯性，防止伪造和欺诈。</li>
<li>内容创作和分发：艺术家、音乐家和作家可以直接与观众互动和交易，获得更公平的收益分配。</li>
</ol>
<h2 id="那什么又是区块链呢">
<a class="header-anchor" href="#%e9%82%a3%e4%bb%80%e4%b9%88%e5%8f%88%e6%98%af%e5%8c%ba%e5%9d%97%e9%93%be%e5%91%a2"></a>
那什么又是区块链呢？
</h2><p>区块链技术是一种分布式账本技术（Distributed Ledger Technology, DLT），用于记录交易和信息的不可篡改、去中心化的数据库。区块链技术的核心思想是通过去中心化的方式实现数据的安全、透明和可信。</p>
<h3 id="区块链的基本原理">
<a class="header-anchor" href="#%e5%8c%ba%e5%9d%97%e9%93%be%e7%9a%84%e5%9f%ba%e6%9c%ac%e5%8e%9f%e7%90%86"></a>
区块链的基本原理
</h3><ol>
<li>
<p>区块（Block）：</p>
<ul>
<li>区块是包含交易记录的数据包。每个区块包含多个交易和一个哈希值（用于唯一标识该区块）。</li>
<li>区块还包含上一个区块的哈希值，从而将所有区块连接成链，形成区块链。</li>
</ul>
</li>
<li>
<p>链（Chain）：</p>
<ul>
<li>区块通过哈希值相互连接，形成一个链式结构。每个区块包含前一个区块的哈希值，这使得区块链中的数据难以篡改。</li>
<li>如果试图更改一个区块中的数据，将导致该区块及其后续所有区块的哈希值发生变化，需要重新计算所有这些区块的哈希值，这几乎是不可能的。</li>
</ul>
</li>
<li>
<p>去中心化（Decentralization）：</p>
<ul>
<li>区块链网络中的所有节点（计算机）都保存一个完整的区块链副本，这些副本通过共识机制保持一致。</li>
<li>没有中央机构控制或管理区块链，数据由所有节点共同维护。</li>
</ul>
</li>
<li>
<p>共识机制（Consensus Mechanism）：</p>
<ul>
<li>区块链网络使用共识机制来确保所有节点对区块链的状态达成一致。常见的共识机制包括工作量证明（Proof of Work, PoW）和权益证明（Proof of Stake, PoS）。</li>
<li>工作量证明（PoW）：矿工通过解决复杂的数学问题来验证交易，并将其添加到区块链中。解决问题需要大量计算能力，确保了区块链的安全性。 权益证明（PoS）：验证者根据其持有的加密货币数量和其他因素来验证交易，并获得相应的奖励。</li>
</ul>
</li>
<li>
<p>加密技术（Cryptography）： -区块链使用加密技术确保数据的安全性和隐私性。每个交易都使用公钥和私钥进行签名和验证，确保只有合法的所有者才能发起交易。</p>
        
        <hr><p>本文2024-06-17首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-07-06</p>]]>
      </description>
      
        <category>教程</category>
      
    </item>
    
    

    <item>
      <title>多链支持，真没你想的那么简单</title>
      <link>https://zh.moejue.cn/posts/269/</link>
      <pubDate>Sat, 05 Jul 2025 08:20:55 &#43;0000</pubDate>
      <author>xxx@example.com (MoeJue)</author>
      <guid>https://zh.moejue.cn/posts/269/</guid>
      <description>
        <![CDATA[<h1>多链支持，真没你想的那么简单</h1><p>作者：MoeJue（xxx@example.com）</p>
        
          <h4 id="一次多链钱包集成的实践反思">
<a class="header-anchor" href="#%e4%b8%80%e6%ac%a1%e5%a4%9a%e9%93%be%e9%92%b1%e5%8c%85%e9%9b%86%e6%88%90%e7%9a%84%e5%ae%9e%e8%b7%b5%e5%8f%8d%e6%80%9d"></a>
一次多链钱包集成的实践反思
</h4><p>总算是空闲下来可以整理一下代码了，Web3项目接入多链钱包连接功能，主要涉及 Ethereum、Polygon、BSC 和 Solana。乍一听好像只是“多做几套兼容逻辑”的事，但真正落地后才发现，很多东西其实没想得那么简单。</p>
<pre tabindex="0"><code>this.networkConfigs = {
    ethereum: {
        chainId: &#39;0x1&#39;, // 1
        chainName: &#39;Ethereum Mainnet&#39;,
        nativeCurrency: {
            name: &#39;Ethereum&#39;,
            symbol: &#39;ETH&#39;,
            decimals: 18
        },
        rpcUrls: [&#39;https://eth-mainnet.public.blastapi.io&#39;],
        blockExplorerUrls: [&#39;https://etherscan.io&#39;]
    },
    polygon: {
        chainId: &#39;0x89&#39;, // 137
        chainName: &#39;Polygon Mainnet&#39;,
        nativeCurrency: {
            name: &#39;MATIC&#39;,
            symbol: &#39;MATIC&#39;,
            decimals: 18
        },
        rpcUrls: [&#39;https://polygon-rpc.com&#39;],
        blockExplorerUrls: [&#39;https://polygonscan.com&#39;]
    },
    bsc: {
        chainId: &#39;0x38&#39;, // 56
        chainName: &#39;BNB Smart Chain&#39;,
        nativeCurrency: {
            name: &#39;BNB&#39;,
            symbol: &#39;BNB&#39;,
            decimals: 18
        },
        rpcUrls: [&#39;https://bsc-dataseed.binance.org&#39;],
        blockExplorerUrls: [&#39;https://bscscan.com&#39;]
    }
}
</code></pre><h4 id="多链并不是简单的支持多个钱包">
<a class="header-anchor" href="#%e5%a4%9a%e9%93%be%e5%b9%b6%e4%b8%8d%e6%98%af%e7%ae%80%e5%8d%95%e7%9a%84%e6%94%af%e6%8c%81%e5%a4%9a%e4%b8%aa%e9%92%b1%e5%8c%85"></a>
多链并不是简单的「支持多个钱包」
</h4><p>最大的感受是：链不一样，钱包交互方式也不一样，连 SDK 的思维方式都不一样。以太坊生态可以用统一的 Web3.js 处理很多逻辑，而到了 Solana，你会发现它完全是另一套系统：Provider 接入、连接流程、PublicKey 构建方式都不太一样，甚至连网络延迟和稳定性都影响体验。</p>
        
        <hr><p>本文2025-07-05首发于<a href='https://zh.moejue.cn/'>阿珏酱のBlog</a>，最后修改于2025-07-05</p>]]>
      </description>
      
        <category>折腾代码</category>
      
    </item>
    
  </channel>
</rss>
