foundry的使用和安装
引言上次那个网站,里面有讲foundry,虽然以前学习过,但是还是没能具体学习过,只会一些测试的用法,其他高深的用法还没有了解到,借此机会再次学习一下,就写了这个笔记
安装推荐这个网站Foundry-Book;安装完成后,在终端使用指令:Forge –version 查看有没有安装好,如果没有,就删除从头再来一遍
我们使用的是windows的系统就要去找属于window安装教程(我就反复安装,吃了很多亏),如果你想使用windows上的子系统Linux,就可以在你的终端使用 wsl –install ,然后重启安装即可
使用 (forge )最开始我还没有了解到怎么自己用Foundry全是从仓库 git clone 下来,它自带Foundry,就不需要自己构建文件夹。现在就介绍一下怎么构建一个文件夹包含Foundry测试框架。(注意我们使用的是VSCODE这个软件,非常好用)
首先创建一个文件夹,在git base终端上输入 forge init 文件夹名字
进入文件夹 cd 文件夹名字
再构建项目 forge build 或则 forge compile
测试时使用 forge ...
区块链知识巩固
最近别人分享了一个网站,对于一些知识巩固我觉得挺好的
网站链接我就放在这里
学习这个网站,我就在这个博客上分享一些我的笔记
一,基本常识1,Oracle: 就是充当区块链与外部世界联系的中介,允许智能合约与真实世界交互数据2,Layer2: 它是构建在Laryer1之上的技术,它可以提高区块链交易的扩展性和效率,它通常在交易之外执行,就是为了避免交易拥挤和一些费用产生,如比特币闪电网络3,DAPP:去中心化的应用,通常在区块链上运行,就类比我们现实生活中的app,就是应用4,智能合约:它使自动执行的合约,在区块链上运行5,web3: 它是一个未获许可依赖于去中心化的,也是一个术语,它开创了一个抗审查和透明协议和交易的一个领域6,Chainlink: 它与区块链上的预言机,它通过链上的逻辑和链下的数据和计算,确保这个逻辑和这个数据保持去中心化7,一个区块包括,区块头,区块体
区块头:nonce(交易的计数),前一个哈希值(注意:创世区块没有父哈希值)时间戳,三个树根(状态树根:记录所有账户的余额,信息等,交易树根,收据树根,币基(识别矿工的地址),难度目标(表示挖矿的难度)
区块体 ...
'数据库原理及应用进阶'
进阶MySQL内置函数一,含义:是指一段可以直接被另一段程序调用的程序或代码
二,分类:
字符串函数 (使用时,前面加select)eg,select concat(’he’,’DE’)
CONCAT(S1,S2,S3):字符串拼接,将S1,S2,S3拼接成一个字符串
LOWER(str):将字符串str全部转化为小写
UPPER(str) : 将字符串str全部转化为大写
LPAD(str,n,pad):左填充,用字符串pad对str的左边进行填充,达到n个字符串的长度
RPAD (str,n,pad) :右填充,用字符串pad对str的右边进行填充,达到n个字符串的长度
TPIM(str):去掉字符串头部和尾部的空格
SUBSTRING(str,start,len):返回从字符串str从start位置起的len个长度的字符串
例如,如果要单个工号前面添加0000,就使用update 表名 set workno = lpad(workno,5,’0’)
数值函数
CEIL(x):向上取整
FLOOR(x):向下取整
MOD (x,y): 返回x/y的模
...
数据库原理及应用基础
术语1,数据是数据库储存的基本对象,而数据库则是长期储存在计算机中,有组织,可共享的大量数据的集合 基本特点:永久储存,有组织,可共享,冗余度小,易扩展2,一些基本模型术语:
关系(r):就是一个整体的表,可对关系的描述:关系名 (属性1,属性2…..);关系名就是表名;
关系完整性约束条件:实体,参照,用户定义完整性
属性:表中的一列为一个属性
域:属性的取值范围,一个具有相同类型的值集合
元组(t):表中的一行
主码:也叫码键,表中的某个属性组,它可以唯一确定一个元组,就是一个比较特殊可以用它来确定唯一的值,有点类似于c中的指针;
分量:元组中的一个属性值
关系模式:对关系的描述,也叫联系3,数据库系统里有三种模式:a,模式(逻辑模式,概念模式):数据库中的全体数据逻辑结构和特征的描述,与物理储存的细节和硬件环境,与具体的应用程序,开发环境及高级程序设计语言无关,它是数据库系统模式的中间层b,外模式(子模式,用户模式):数据库用户使用的局部数据的逻辑结构和特征的描述,是与某一应用有关的数据的逻辑表示,每个用户只能看见和访问对应的外模式中的数据,用户只能与外模式建立联系c, ...
区块链入门知识常用链接
推荐这个博主的整个入门区块链的方向,里面有个思维导图,值得一看.点击
僵尸编程学习点击
WTF学院,学习 EVM ,solidity值得一看.点击
Ethernaut靶场练习,点击
damn-vulnerable-defi靶场练习,点击
EVM PUZZLES题解参考链接,点击1 点击二
evm code指令速查 点击
注:自毁函数将会被弃用,点击1,点击2
闪电贷的极简入门
关于solidity的一些基本问题,用于自查,点击
将本地文件上传到github上,
要有一个自己想上传的仓库,cd 要上传的文件名,git remote add origin (ssh下的仓库地址),切换分支,主要是看仓库是master,还是main, 还是其他的分支,git branch -M main , 切换到main分支上直接上传到分支上 git push -u origin main即可
一些智能的工具:ChatGPT;谷歌开发的一个智能软件:Gemini;一个社区的检索问题:Ethereum-Stack-Exchange一个社区的全球交流平台:stackoverflow;web一个知识构建 ...
EVM puzzle
EVM PUZZLE运行游戏
puzzle 1 CALLVALUE题目:
pc opcode opcode name
01 38 CODESIZE
02 03 SUB
03 56 JUMP
04 FD REVERT
05 FD REVERT
06 5B JUMPDEST
07 00 STOP
08 FD REVERT
09 FD REVERT
输入恰当的value,使得题目的 opcode 正确执行,直到执行STOP
分析:CALLVALUE实际上就是msg.value,它会将msg.value存储到栈顶,而JUMP会读取栈顶值,并跳转到相应的字节地址,由JUMPDEST承接,所以我们只需要让msg.value==8即可
puzzles 2 CODESIZE题目:
pc opcode opcode name
00 34 CALLVALUE
0 ...
EVM入门
OpcodesOpcodes(操作码)是以太坊智能合约的基本单元。我们写的Solidity智能合约会被编译为字节码(bytecode),然后才能在EVM(以太坊虚拟机)上运行。而字节码就是由一系列Opcodes组成的。当用户在EVM中调用这个智能合约的函数时,EVM会解析并执行这些Opcodes,以实现合约逻辑。
常见的OpcodesPUSH1: 将一个字节的数据压入堆栈。例如,PUSH1 0x60 就是将 0x60 压入堆栈。DUP1 : 复制堆栈顶部的一个元素。SWAP1: 交换堆栈顶部的前两个元素。
例如:下面是一个简单的Solidity智能合约,它只有一个add()函数,计算1+1的结果并返回。
// SPDX-License-Identifier: MITpragma solidity ^0.8.20;contract Add { function add() public pure returns (uint256 result) { result = 1+1; }}
将合约编译后,我们可以得到合约对应的b ...
Compound
CompoundCompound是在Ethereum上运行的软件,旨在奖励分布式计算机网络运行传统货币市场。Compound允许用户将加密货币存入借贷池让借款人使用。而贷方从他们存入的资产赚取利息。
存款后,Compound会奖励贷方名为cToken(代表存款)的新加密货币。cToken的例子包括cETH、cBAT以及cDAI。
每个cToken都可无限转让或交易,但只能兑换最初锁定在协议中的加密货币。整个过程由Compound代码自动处理,代表贷方可以随时提币。
为了激励这个行为,Compound使用了另一种称为COMP的自家加密货币。每当用户和Compound市场互动时(借入、提取或偿还资产),作为奖励他们都会获得额外的COMP代币。
简言之,Compound 是一个允许用户借贷代币的智能合约,它与你的银行类似,Compound 把你的钱借给借款人,并随着时间的推移赚取利息。但与银行不同的是,你的利息是从你存入 Compound 的智能合约后开始复利计算的。因为这是一个智能合约,整个流程中没有中间人,因此利息会比传统银行要高。
运作机制Compound 协议让开发者可以基于以太坊 ...
GHO
GHO它是 Aave 协议中唯一一个去中心化、超额抵押的稳定币,作为以太坊主网上的去中心化稳定币,GHO 由用户铸造。与 Aave 协议上的所有借贷一样,用户必须提供抵押品(按特定抵押品比率)才能铸造 GHO。相应地,当用户偿还借贷头寸(或被清算)时,GHO 将返回 Aave 池并被销毁。GHO 铸造者累积的所有利息支付将直接进入Aave DAO 金库,这与用户借入其他资产时收集的标准准备金因子形成鲜明对比,本金将被销毁。
人们对真正去中心化、超额抵押和可配置的稳定币的需求很大。最近的事件证明了去中心化稳定币在市场波动期间维持稳定价值的用例。GHO 是一种由 Aave Governance 控制的稳定币,在社区支持下,它有潜力成为 DeFi 生态系统持续增长不可或缺的一部分。
与许多稳定币不同,GHO 的预言机价格是固定的。GHO 等去中心化稳定币是透明的,无法更改。利率由 Aave DAO 定义,偿还的利息将重定向到 DAO 而不是资产供应商。在安全模块中质押 AAVE 的借款人可享受折扣。
Aave学习知识
AaveAave是一种完全去中心化的、社区管理的协议,Aave 是芬兰语,意思是“幽灵”,最初于 2017 年 11 月推出时被称为 ETHLend。 ETHLend 是一个点对对点借贷系统。后来进行改进才是Aave,用户可以在其中借入和借出加密资产。协议的价值主张是创建一个可供任何拥有加密资产的人使用的替代去中心化资产货币市场。
作用Aave 是一个借贷池系统,使用户可以选择借入、借出和赚取 20 种不同数字资产的利息,而无需中间人。
想要赚取利息的用户将存入他们想要借出的资金,然后将其收集到流动性池中。当借款人贷款时,他们从这些资金池中提取资金。贷方可以以任何他们认为合适的方式交易或转让这些代币。
Aave 发行两种类型的代币来促进此活动,$AAVE(原生代币)和 aTokens。$AAVE 令牌有多种使用方式:1,如果支付费用,$AAVE 的所有者可以选择在向公众发布贷款之前查看贷款。
2, 使用 $AAVE 作为抵押品的用户可以比使用任何其他数字资产借入的金额略多。
3,代币持有者可以在平台上质押 $AAVE,以获得大约 6% 的 APY 分配。
aTokens 代币:
1,这 ...