| timezone | UTC+8 |
|---|
GitHub ID: JeffreyXu-hash
Telegram: @Jo_JoXu
大家好,我是Jo_Jo
今天主要任务:配置foundry和vscode以及在wsl安装claudecode,
Notion:https://www.notion.so/Cyfrin-Solidity-2502301197f880b0af0df47b2505e19e?source=copy_link 可以在Notion上看我的笔记更新,总结一下: 今天主要学了Chainlink预言机的喂价feature,并在测试网领用link币并部署了喂价合约 同时也学习了如何部署自己的Library、构造函数、修饰器、Solidity Math这些
Notion:https://www.notion.so/Cyfrin-Solidity-2502301197f880b0af0df47b2505e19e?source=copy_link 今天跟着Cyfrin updraft的Soilidity课程跟了一遍,感觉比看WTF文档好学多了,自己跟着敲了很多代码,也明白了继承和合约之间的调用部署之间的区别。并且在以太坊主网和其L2zksync(利用remix中的zksync插件)部署了自己的合约,发起了自己的交易,同时也体验了用zksync桥接实现代币的跨链转移,同时学习了一下L2rollup扩容的方案,但很多公链技术性的没太明白。 详情请见Notion
Notion:https://www.notion.so/Solidity-101-24e2301197f8801795cfd81c36310165?source=copy_link 今天主要是把WTF中Solidity101学了一遍,到后面的继承开始有点看不太懂了,感觉学习资料库这部分不是很详细,虽然notion上很多跟wtf文档一样,但写在notion上感觉可读性比较好...
Notion链接:https://www.notion.so/Solidity-24d2301197f8803796c3da5926b15e37?source=copy_link
工厂模式是一种设计模式,主要用来创建其他合约的实例。它通过一个“工厂”合约统一管理多个子合约的创建和管理。
这种模式常用于:
- 批量部署合约实例
- 管理子合约地址,方便调用和跟踪
- 解耦合创建和使用,提升合约复用性
- 工厂合约中有一个函数用于部署新的子合约(使用
new关键字) - 子合约部署后,工厂合约保存它们的地址,便于后续管理和调用
- 工厂合约可以为每个子合约设置不同的参数
// SPDX-License-Identifier: MIT
pragma solidity ^0.8.30;
import {HelloWorld} from "https://github.com/smartcontractkit/Web3_tutorial_Chinese/blob/main/lesson-2/HelloWorld.sol";
// 1.直接引入统一文件系统下的合约
// 2.引入GitHub上的合约
// 3.通过第三方包引入
contract HelloWorldFactory {
HelloWorld hw;
HelloWorld[] hws;
function createHelloWorld() public {
hw = new HelloWorld();
hws.push(hw);
}
function getHelloWorldByIndex(uint256 _index) public view returns (HelloWorld) {
return hws[_index];
}
function callSayHelloFromFactory(uint256 _index, uint256 _id) public view returns(string memory) {
return hws[_index].sayHello(_id);
}
function callSetHelloWorldFromFactory (uint256 _index, string memory newString, uint256 _id) public {
hws[_index].setHelloWorld(newString, _id);
}
}| 关键点 | 说明 |
|---|---|
new 关键字 |
在工厂合约内用 new 子合约名(参数) 部署新的子合约实例 |
| 子合约构造函数 | 子合约通过构造函数接收初始化参数 |
| 存储子合约地址 | 工厂合约通常用数组或映射保存子合约地址方便管理 |
| 访问权限 | 可根据需求设置子合约创建权限(如只允许owner调用) |
| 子合约接口 | 工厂合约可通过子合约的地址调用子合约公开函数 |
| 合约大小限制 | 部署大量子合约时要注意Gas和链上存储成本 |
Notion地址:
- 使用映射(
mapping)管理子合约,例如按创建者分组保存 - 给子合约设置唯一ID,方便索引查找
- 增加事件(
event)通知外部监听子合约创建 - 支持子合约升级或销毁(需设计销毁机制)
- 集成OpenZeppelin的合约库,增加安全和功能性
尝试用notion提交今天的笔记,以下是notion笔记链接,今天主要学了Solidity一些语法和数据的实操,同时参加了技术向的会议,有点听不太懂┭┮﹏┭┮ https://www.notion.so/Solidity-24c2301197f880768906c26dac49105e?source=copy_link
NFT 1.定义 NFT 全称 Non-Fungible Token,意思是“非同质化代币”。它是一种存在于区块链上的独一无二的数字资产。 和比特币、以太坊这种同质化代币不同,NFT 不能互换,也通常不能拆分,每一个都有自己的身份标识。
2.特点 唯一性:每个 NFT 都有独立的 Token ID,就像身份证号,哪怕长得一样,链上记录也不同。 不可分割:大多数 NFT 不能拆开卖,交易只能整体转移。 稀缺可查:总量和持有人都能在链上查到,不能偷偷多发。 链上所有权:在钱包里就是真的你的,平台下架也不会丢。 可编程:能自动分成、解锁权限等(例:二手卖出自动给创作者分版税)。 跨平台可用:符合标准的 NFT,可能在多个应用和市场里通用。
3.用途 数字艺术:Beeple、CryptoPunks 等。 收藏品:NBA Top Shot 等。 游戏资产:虚拟土地、武器装备(Decentraland、The Sandbox)。 身份标识:ENS 域名、链上社交头像。 音乐影视:专辑 NFT、粉丝专属内容。 票务会员:防伪门票、链上权益证明。 现实资产上链:房产证、奢侈品溯源。
今天在飞机上学习了两个小时的chainlink中文社区solidity的基础语法,了解remix ide基础页面操作包括编译器版本、EVM版本设置、智能合约的部署等。同时学习Solidity基础数据类型以及结构,但缺乏电脑实操,需后续巩固
8.6学习笔记 今天学习的是DEFI一些基础知识。 定义:DeFi(Decentralized Finance)是基于区块链的金融服务体系,不依赖传统金融机构(银行、券商等),而是通过智能合约来实现资产的存储、借贷、交易、投资。
-
去中心化 DeFi 不依赖银行、券商等传统机构,规则和执行都是通过智能合约完成。好处是:不用担心中间机构作恶或破产,全球用户都能平等参与。但也有问题,比如很多协议虽然号称去中心化,但治理代币可能集中在团队和大户手里,最终还是“少数人说了算”。区块链本身如果节点分布不均,也有中心化风险。
-
开放性 谁都能用,只要有钱包和网络,不需要银行账户或者信用审查。这让金融服务可以触达更多没有银行账户的人,比如发展中国家的一些用户。不过,所有交易都是公开的,虽然匿名但可追溯,对隐私其实不算友好。同时,开放也给洗钱和违法行为提供了便利。
-
无需信任 交易和借贷完全靠代码自动执行,不用信任任何中介。这种模式的好处是没人能随便冻结你的资金,也不会有“跑路银行”。但坏处是责任都在自己身上:私钥丢了钱就没了,代码有漏洞也没人兜底。
-
可组合性 不同的协议可以像乐高一样拼接。例如,你可以在 Aave 上借钱,再去 Uniswap 做交易,然后把 LP 代币放进 Yearn 再赚利息。这种组合可以衍生出很多创新玩法,也能提高收益。问题是,链上的协议相互关联太多,一个出问题可能会连锁崩溃,对新手来说,复杂度也有点高。
-
无国界 只要能上网,就能用 DeFi,不管你在哪个国家,也没有跨境汇款的麻烦。这对国际支付和全球资金流动是好事。但各国监管不同,可能会出现法律风险。比如一个国家允许,一个国家禁止,就很麻烦。
-
透明性 协议都是开源的,交易都记录在链上,任何人可以去查、去审计。好处是公开透明,不容易暗箱操作。缺点是信息太多,普通人根本看不懂代码;而且因为交易信息透明,容易被利用,比如矿工可以用“抢跑交易”套利。
今天学习的是内容是稳定币的基础内容:
- 稳定币所解决的问题:
普通的数字货币由于背后没有实体资产的支撑,导致其价格波动剧烈,价格时常偏离价值。数字货币的作用就是使其价值瞄定法币,常见的锚定方法有以下三种:
法币储备抵押型稳定币:代表有USDT、USDC。这种稳定币的特点通常由中心化实体运营,如Tether公司,他们在铸造一个USDT的同时会准备一美元的储备保证金,防止未来兑换出现流动性风险。该美元基金池需要受独立的会计师和审计单位进行记账审查,且受监管影响较大。因此其中心化的程度比较高,但其背后的支持资产是法币,因此具备抗加密资产高波动性的特点。
超额抵押型稳定币:常见的超额抵押型稳定币就是MakerDAO发行的DAI,这种稳定币的特点就是以超额的加密货币如ETH、BTC作为抵押,从而mint出DAI。由此引出抵押率这个概念,救赎抵押品的价值除以铸造的稳定币的价值,这个指标通常大于100%,从而防止套利。如果抵押率小于最低抵押率,那么智能合约就会执行清算程序,将抵押的数字货币清算从而为超额抵押型稳定币提高坚实的价值支持。若借款人偿还本金和利息后方可从抵押池取回自己的抵押品同时销毁稳定币。
MakerDAO还有一个特点,Maker代币不仅是作为修改合约的话语权,而且其通缩情况,价值变动与DAI的利息收入呈现正相关,因为借款人的利息都用于赎回DAI并销毁。
算法型稳定币:不通过实体资产作价值支持,而通过算法调节供需使其自身价值保持稳定,如AMPL,其供给调节是通过模拟央行进行公开市场操作、rebasing、发行二级代币实现的。但由于没有价值支撑,其对投资行为造成的价值波动抵抗性较差。
总而言之,稳定币的种类选取通常是在去中心化程度与价值稳定之间作取舍。稳定币的作用包括锁定风险,作为稳定的交换媒介与价值尺度,实现普惠金融等提高手段。(仍然在旅游中,先看到这里8️⃣!)
8.4 区块链入门 区块链在我看来是一种以分布式账本形式记录数据的数据库。其具有的特点是去中心化、不可篡改、公开透明、可验证。
去中心化:没有一个个人或实体可以控制区块链数据的记录、智能合约的运行。每个节点在区块链网络都是平等的,这一点区别与web2中只能向单一节点发出网络请求。技术关键是共识机制:到底是谁能决定数据的记录?(以BTC为例,区块大小为1兆,记录的数据有限,而节点发出的请求在单一时间很多,必须筛选出一个节点能代表网络对所记录的交易的认可)
1.区块链技术
不可篡改:区块链技术不可篡改是指没有人能够修改已确认的区块信息,这种不可篡改性是有哈希指针实现的。一个区块分为区块头和区块body,区块头的默克尔树根是通过body里面的交易计算哈希得到的(有点像二叉树),因此区块头可以代表整个区块的信息,除了默克尔,还有上一个区块的哈希值、nonce、区块版本、区块高度、这个区块的哈希、时间戳等。区块通过区块哈希彼此相连,形成链,如果稍微改动过去区块的数据,则必须改变后面整条链上的数据,不然哈希指针就会断裂。这是很难的,因为根据一个哈希值去解密出原来的数据是很困难的。因此防止了不可篡改。
公开透明:所有人都可以查看链上的交易信息,只要你随便向一个诚实的节点发出请求。这种实现是基于分布式账本实现的,每个人都有同样的账本,每个账本都有同样的数据(正常情况下,分叉除外)。但这样节点存储数据不会随着交易增加而过载吗?根据chainlink labs的frank解释硬件升级速度会超过数据的存储速度,况且现在链上处理的数据速度有限。根据以太坊blob数据技术实现,我认为过一段时间被自动删除的blob数据好像也能解决这一点。
可验证:看北大肖臻老师的视频感觉可验证分为两种。一种是签名的可验证,一种是utxo的可验证。签名的可验证主要通过比特币脚本checksig来验证。以Alice对Bob付款为例,我们怎么知道这笔交易真是Alice发送的呢?那可以对交易信息算哈希,然后Alice的私钥对哈希加密。那验证者可以用Alice的公钥解密,得到交易信息的加密哈希,然后再用公开透明的交易信息算一次哈希,对比两个哈希值,就知道是不是Alice的私钥签名(非对称加密)。UTXO验证主要为了防止double- spending. 通过比特币的哈希指针我们可以知道这笔花费来自哪个转账交易的比特币。因为之前那个交易已经上链了,我们相信他是正确的。
2.以太坊技术
以太坊是在比特币的基础上形成的,像一开始的Pow,哈希运算等。比特币运用于交易,但以太坊进行了拓展,认为很多畅想都可以去中心化,由此产生智能合约,衍生出Defi, NFT, Gamefi, DAO,Wallet等应用,组成以太坊生态。
智能合约:Solidity作为智能合约的编程语言,属于一种图灵完备的编程语言。大家都可以利用solidity进行开发,部署,构建成主网之上的生态。智能合约一旦部署,不可修改。智能合约逻辑简要说就是 if… elif…else..(我只会python基本语言🫰)。一旦条件达成,智能合约自动在各节点以太坊虚拟机EVM执行,且形成智能合约数据上链,通过etherscan可以查。因此可以做很多去中心化的应用,用合约代码的全网部署代替单一节点请求,且保证代码的开源以及数据的透明
POS:自从beacon链共识机制测验完成,主链和beacon链merge之后实现了POS权益共识机制。验证者只需质押32个以太币就能有概率成为验证者,当然这个概率跟质押的以太币数量正相关。这克服了Pow能源消耗大的问题,比较绿色环保同时也提高了出块速度。但我认为马太效应蛮明显的…
以太坊的未来:安全、快速、节能是以太坊未来的发展方向。主要通过layer2进行链下roll up执行一些程序操作,再上传数据给主网。主网进行数据分片处理(感觉有点像分身术)从而提高数据上链的效率以及降低主网的堵塞情况。技术还包括blob数据、零工作证明等。零工作证明没有所谓的挑战期,验证证明比验证交易简单很多,但需要和节点配适,工作比较困难。(很多计算机知识不太懂…)
尝试用notion mobile写的,因为在旅游ing,挑战任务可能比较难完成,打卡笔记做的比较认真一点,对冲一下🥺
非码农出生,但笨人打算回去尝试学一下solidity和一些链上数据分析工具Dune, Etherscan, Nassen, Defilama(应该这么拼吧?),有意向互相学习交流的同学可以加我vx- Positive-cynic