Rust
未读Rust基础[part1]
安装
➜ rust curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh
安装成功
验证
➜ rust rustc --version
zsh: command not found: rustc
因为我是用的是zsh,所以zsh配置文件需要加入配置
➜ rust echo 'export PATH="$HOME/.cargo/bin:$PATH"' >> ~/.zshrc
➜ rust source ~/.zshrc
➜ rust rustc --version
rustc 1.88.0 (6b00bc388 2025-06-23)
安装成功!
其他命令:
➜ rust rustup update # 安装
➜ rust rustup self uninstall # 卸载
VsCode插件
rust语言支持:
rust包支持:
toml支持:
rustc
创建目录
mkdir hello-world
cd hello-world
创建源文件main.rs
fn m ...
Solidity
未读WEB3-Day8—Foundry框架[part1]
简介
Foundry Fundamentals
Foundry 是一个相对较新但发展迅猛的智能合约开发框架,以高效性和模块化设计著称。关于这个强大工具的最佳简介可查阅 《Foundry 官方手册》:
Foundry 可管理项目依赖、编译工程、运行测试、部署合约,并支持通过命令行及 Solidity 脚本与区块链交互。
请务必收藏 《Foundry 官方手册》—— 它是最全面的资源,可解答您的所有疑问,在学习过程中会持续提供帮助。
Foundry 的核心优势包括:
借助 Rust 进行编译,相比 Hardhat 或 Brownie 等框架,构建速度显著提升;
完全基于 Solidity 开发,无需学习其他编程语言;
文档体系极为完善。
推荐代码编辑器:Visual Studio Code
在本课程中,我们将使用 Visual Studio Code 完成智能合约的 编写、测试、部署 及 交互。这款轻量级代码编辑器功能强大,支持 Windows、macOS 和 Linux 系统,其丰富的扩展生态系统使其成为智能合约开发的首选工具之一 ...
Solidity
未读WEB3-Day7—Solidity基础[part6]
变量优化
优化仅设置一次的变量的燃气消耗(gas usage)
变量 owner 和 minimumUSD 仅设置一次且永不改变:owner 在合约创建时赋值,minimumUSD 在合约初始化时设定。
评估 FundMe 合约
我们可以通过部署合约并在终端中观察交易来评估创建合约所需的燃气量。在原始合约配置中,我们消耗了近 859,000 单位燃气。
常量(Constant)
为减少燃气消耗,我们可以使用 constant 和 immutable 关键字。这些关键字确保变量值保持不变。更多信息可参考 Solidity 文档。
对于仅赋值一次且永不改变的变量,我们可以应用这些关键字。
对于编译时已知的值,使用 constant 关键字。它会避免变量占用存储槽位,从而使读取更便宜、更快速。
使用 constant 关键字可节省约 19,000 单位燃气,这接近在两个账户之间发送 ETH 的成本。
📝 注意:
constant 变量的命名约定为全大写并以下划线分隔(例如 MINIMUM_USD)。
⚠️ 警告:
将当前 ETH ...
Solidity
未读WEB3-Day6—Solidity基础[part5]
继续完善fundMe合约 的 fund() 和 withDraw()
转换ETH为USD
如果我们的最小交易值需要用美元为单位,我们该如何和msg.value进行比较?
新建一个变量:
uint256 public minimumUsd = 5 * 1e18; // 补全精度
新建两个函数:
// Function to get the price of Ethereum in USD
function getPrice() public {}
// Function to convert a value based on the price
function getConversionRate() public {}
getPrice():获取真实世界中以太坊当前的美元市场价格
getConversionRate():根据当前输入价格进行计算和转换
去中心化预言机
以太坊等资产的美元价格无法仅通过区块链技术获取,而是由金融市场决定。为了获取正确的价格信息,必须在链下数据与链上数 ...
Solidity
未读WEB3-Day5—Solidity基础[part4]
通过函数发送ETH
新建合约 FundMe.sol,在本合约中会通过fund()函数向智能合约转移以太币。该函数将要求最低数量的ETH确保交易正常。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract FundMe{
function fund() public {
}
}
我们还需要一个Withdraw函数,这样合约的owner(拥有者)可以提取不同的funder 发送的资金。
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.18;
contract FundMe{
function fund() public {
}
function withDraw() public {
}
} ...
Solidity
未读WEB3 Day4—Solidity基础[part3]
智能合约部署 Smart Contracts Deploying
Sepolia TestNet deploying
我们可以通过进入部署选项卡,从本地虚拟环境(Remix VM)切换到注入的提供者 - MetaMask 来开始部署过程。这一操作将允许Remix发送请求并与您的MetaMask账户进行交互。
随后系统会提示你去选择一个账号。 在你成功连接到remix之后,你会看到账号已经成功链接到并且正在使用sepolia网络的信息。
注意,需要你的测试网络里面必须有足够的 sepolia ETH,如果没有需要从水龙头获取,免费的水龙头我这边会集中收集一次,后续可点击这篇文章:【TODO 挖个坑】;
暂时可以去这里faucet, 但是还是需要主账户里面要有ether。
随后,MetaMask就会要求你在测试网站上签署发送:
交易执行之后,合约地址会将交易详情一同显示在已部署的合约列表下面。这就是Eherscan上部署交易的显示方式。
合约交互 Contract interaction
合约部署完成以后,我们可以与之交互并更 ...
Solidity
未读WEB3 Day3 — Solidity基础[part2]
存储位置
solidity里面有六种存储位置。
Calldata
Memory
Storage
Stack
Code
Logs
calldata和memory是函数执行期间变量的临时存储位置,calldata只读,用于不可修改的函数输入。
相比之下,memory允许读写访问,使变量能在函数内部被修改。
要修改calldata变量,必须先讲它们加载到memory中。
Calldata
只读的, 比storage更经济,主要用于输入。
下面函数中_name 用calldata关键字,就会收到错误提示,因为不可修改。
Memory
可读可修改,大多数的变量默认自动使用memory,但是字符串不能默认,需要明确指定memory或者calldata
string memory variableName = "someValue";
下面会讲到为什么会这么特殊
storage
存储在storage的变量在区块链上是持久化的,其值在函数调用和交易之间保持不变。
比如下面这个变量 favoriteNumber ,声明在函数外部,会被隐式 ...
Twikoo评论系统的Cloudflare部署方案
Twikoo是一款简洁、安全且免费的静态网站评论系统,在提升网站互动性方面表现出色。通常,Twikoo可部署在诸如腾讯云开发环境、Vercel等平台,但借助Cloudflare进行部署,能极大改善冷启动延迟问题,实现快速加载,为用户带来更流畅的评论体验,同时利用Cloudflare强大的全球网络提升访问速度。以下为详细的Cloudflare部署Twikoo评论系统的步骤与要点。
一、前期准备
在开始部署前,需提前准备好相关工具与资源:
Cloudflare账户:若尚未注册,前往Cloudflare官网完成注册流程。
Node.js环境:确保本地开发环境安装了Node.js,可通过Node.js官网下载并安装对应系统的最新版本,安装完成后,在命令行输入node -v验证是否安装成功及查看版本号。
文本编辑器:推荐使用Visual Studio Code、Sublime Text等,方便进行代码编辑与配置文件修改。
二、安装依赖包
首先,创建一个新的项目目录,用于存放Twikoo相关代码与配置文件,在命令行中进入该目录,执行以下命令 ...
Solidity
未读Solidity 基础[part1]
Remix IDE
函数
无返回体函数示例:
// SPDX-License-Identifier: MIT
pragma solidity 0.8.19; // chose our solidity version
contract SimpleStorage {
uint256 public myFavoriteNumber; // 初始值就是0 而且是internal 也就是内部不可见的
function store(uint256 favoriteNumber) public {
myFavoriteNumber = favoriteNumber;
}
}
有返回体示例:
function recive() public view returns (uint256) {
return myFavoriteNumber;
}
数组
// 数组
uint256[] public myFavoriteNumbers;
...
WEB3 Day2—BlockChain Basic 2
Layer1
blockChain的base layer,例如bitcoin、BNB chain、Solana,and Avalanche.
Layer2
构建在L1区块链外部但是也与之连接的任何应用application。有各种类型,比如for example ChainLink(去中心化预言机网络) ,以及像The Graph(事件索引网络)。
好的,我将为你优化这段区块链技术描述,提升专业性和清晰度:
Rollup 技术:以太坊Layer2扩容的核心方案
Rollup是Layer2(L2)扩容的主流解决方案,其核心原理是将多笔链下交易打包为一个聚合交易,仅将交易摘要(而非完整数据)提交至以太坊主链(Layer1),大幅提升交易吞吐量并降低Gas费用。根据验证机制不同,Rollup可分为两类:
1. Optimistic Rollups(乐观汇总)
工作机制:默认所有链下交易均为有效,运营商(Operator)定期向主链提交状态根(State Root)和交易哈希。若其他参与者发现欺诈交易,可在挑战期(通常7天)内提交 ...

![Rust基础[part1]](https://img.soniachen.com/blog/posts/2025/07/image-20250708170114528.png)
![Foundry框架[part1]](https://img.soniachen.com/blog/posts/2025/07/image-20250707180402433.png)
![Solidity基础[part6]](https://img.soniachen.com/blog/posts/2025/07/image-20250704160915402.png)
![Solidity基础[part5]](https://img.soniachen.com/blog/posts/2025/07/image-20250703173726505.png)
![Solidity基础[part4]](https://img.soniachen.com/blog/posts/2025/07/image-20250702172430218.png)
![Solidity基础[part3]](https://img.soniachen.com/blog/posts/2025/07/deploying2-20250701102829448.png)
![Solidity基础[part2]](https://img.soniachen.com/blog/posts/2025/06/calldata.png)

![Solidity基础[part1]](https://img.soniachen.com/blog/posts/2025/06/image-20250617173555637.png)

