文章
视频
课程
百科图谱
集训营
更多
问答
提问
发表文章
专栏
活动
文档
工作
集市
发现
Toggle navigation
首页
文章
视频
课程
集训营
工作
工作
问答
活动
文档
集市
搜索
登录/注册
SC programmer
文章
专栏
问答
视频
课程
集市作品
活动
招聘
TA的视频
TA的合集
Cyfrin Updraft 的 Solana 智能合约课程
视频 AI 总结: 本视频是 Solana 课程的介绍,核心内容是讲解如何使用 Rust 语言和 Anchor 框架开发 Solana 程序。课程将通过原生 Solana 库和 Anchor 框架两种方式进行教学,旨在帮助学员快速掌握 Solana 程序开发,并深入理解 Solana 的底层原理。课程鼓励使用 AI 辅助学习,并提供了练习和解决方案,帮助学员实践和巩固所学知识。 关键信息: 1. Solana 程序开发有两种方式:使用 Solana 原生 Rust 库(更深入理解底层原理)和使用 Anchor 框架(快速原型开发)。 2. 学习本课程的原因包括:开发 Solana 程序、练习 Rust 编程、以及对审计和漏洞赏金感兴趣。 3. 课程的先决条件包括:Rust 编程基础、区块链基础知识、以及 EVM 智能合约开发经验(如 Solidity 或 Vypr)。 4. 鼓励使用 AI 辅助学习,但需要注意 AI 生成代码可能存在问题,需要结合文档和搜索进行修正。 5. 课程练习分为原生程序开发和 Anchor 框架开发,练习和解决方案位于 GitHub 仓库中。 6. Solana 中代码和状态分离,代码存储在 Programs 中,状态存储在 Accounts 中。 7. Solana 交易可以并行执行,因此需要声明交易可能修改的所有账户。 8. Solana 中部署程序或创建账户需要锁定 SOL,关闭账户或删除程序时,锁定的 SOL 会被返还。 9. Solana 程序默认可升级,而 Ethereum 合约默认不可变,需要使用代理合约才能升级。 10. Solana 中所有数据都存储在 Accounts 中,Accounts 包含 LAMPORTS(余额)、DATA(任意数据)、OWNER(程序所有者)、EXECUTABLE(是否为程序账户)等字段。 11. PDA (Program Derived Addresses) 是没有私钥的公钥,由程序 ID、种子和 bump 确定性地创建,常用于存储用户相关信息。 12. CPI (Cross-Program Invocation) 是程序调用另一个程序,有最大深度限制(目前为 4),且需要注意权限传递。 13. 使用 Anchor 框架开发 Solana 程序时,可以通过 IDL (Interface Definition Language) 文件导入其他程序的接口,无需手动声明指令。 14. Solana 程序有大小限制,并非所有 Rust 库都可以使用。 15. 创建 Solana 账户需要指定空间大小、支付租金,并且账户本身需要签名。 16. 转移 SOL 有两种方式:如果源账户属于系统程序,可以直接调用系统程序;如果源账户是 PDA,则需要手动转移。 17. Solana 中与 Token 相关的概念包括:Mint Authority(铸币权)、Mint(Token 本身)、Token Program(管理 Token 的程序)、Token Account(存储 Token 余额的账户)、Associated Token Account(与用户关联的 Token 账户)。 18. 可以使用 Solana CLI 管理 Token,包括创建 Token、铸币、转移 Token、查看余额等。 19. 恒定和 AMM (Constant Sum AMM) 是一种以恒定价格交换 Token 的 AMM,其公式为 x + y = L,其中 L 为常数。
25
0
0
2天前
剖析 Curve V1 稳定币兑换
视频 AI 总结: 该视频是关于 Curve V1 AMM 的课程介绍,面向有 Foundry 经验的高级 Solidity 开发者。课程将深入讲解 Curve V1 的数学原理和算法,并通过 Vyper 代码冷启动、Foundry 练习等方式,帮助学习者理解 Curve V1 的内部机制,并为学习 Curve V2 打下基础。课程讲师 Tez 拥有多年的软件和智能合约开发经验,并提供 GitHub 仓库供学习者进行练习和讨论。 视频中提出的关键信息: * 课程目标:理解 Curve V1 的数学和算法,阅读 Vyper 代码,并进行 Foundry 测试。 * 预备知识:熟悉 Foundry、恒定乘积 AMM 和恒定总和 AMM 的数学原理。 * 可选知识:了解 Uniswap V2/V3、DeFi 基础知识(如稳定币 DAI/USDC)以及 Python。 * 课程内容:Curve V1 的数学和算法、Vyper 代码冷启动、Foundry 练习。 * 学习 Curve V1 的意义:为新的 AMM 设计提供灵感,帮助参与安全竞赛和漏洞赏金项目,以及为理解 Curve V2 做准备。 * Curve V1 与 Uniswap V2/V3 的区别:Curve V1 使用 Vyper 编写,滑点低,支持两种或多种代币,可以指定提款代币,并收取不平衡费用。 * Curve V1 的核心公式:是恒定乘积和恒定总和的结合,通过参数 A 控制曲线的平坦程度。 * Curve V1 使用牛顿法来计算代币数量和流动性。 * Curve V1 的主要合约是 StableSwap,用户通过 exchange, addLiquidity, removeLiquidity 等函数与之交互。 * StableSwap 合约会先计算 A 参数,再计算流动性 D。 * 所有代币余额在计算前都会转换为 18 位小数。 * getVirtualPrice 函数返回每个 LP 代币的价值。 * calcTalkingAmount 函数计算要铸造或销毁的 LP 代币数量。 * exchange 函数用于交换代币。 * getY 函数计算 tokenOut 的代币余额。 * getDy 和 getDyOnTheLine 函数计算交换代币后获得的代币数量。 * addLiquidity 函数用于向 Curve V1 AMM 添加流动性。 * removeLiquidity 函数会销毁 LP 份额,然后按比例将池中的所有代币返还给流动性提供者。 * removeLiquidityOneCoin 函数会销毁 LP 份额,然后返还用户指定的单个代币。 * calcWithdrawOneCoin 函数计算用户将收到的单个代币数量。
392
0
0
2025-11-28 11:46
默克尔树算法
视频 AI 总结: 该视频详细讲解了 Merkle Root 的计算、Merkle Proof 的生成以及 Merkle Proof 的验证算法。首先,视频介绍了如何通过哈希一系列值,并不断配对哈希值进行再次哈希,最终得到 Merkle Root。接着,视频讲解了如何根据 Merkle Root 的计算过程,提取出生成 Merkle Proof 所需的关键哈希值。最后,视频展示了如何利用 Merkle Root 和 Merkle Proof,通过循环哈希验证 Merkle Proof 的有效性。 关键信息: * **Merkle Root 计算:** 对数据进行哈希,然后将哈希值两两配对再次哈希,重复此过程直到只剩一个哈希值,即为 Merkle Root。奇数个哈希值时,复制最后一个哈希值进行配对。 * **Merkle Proof 生成:** 在计算 Merkle Root 的过程中,记录下用于计算特定哈希值所需的兄弟哈希值,这些哈希值构成 Merkle Proof。 * **Merkle Proof 验证:** 使用 Merkle Proof 中的哈希值,结合已知的哈希值,逐步计算哈希值,直到得到一个哈希值,将其与 Merkle Root 进行比较,如果一致则验证成功。 * **算法实现:** 视频中给出了计算 Merkle Root、生成 Merkle Proof 和验证 Merkle Proof 的详细算法步骤,包括如何处理奇数个哈希值的情况,以及如何根据索引确定配对的哈希值。
292
0
0
2025-11-08 10:55
二进制指数运算 | Solidity 0.8
本视频讲解了如何使用汇编语言编写二进制指数算法,该算法高效地计算x的n次方,并在MakerDAO稳定币中用于计算复利。视频分为几个部分,首先处理x为0的情况,然后处理x大于0的情况,包括算法编写、溢出检查和舍入误差检查。对于x为0的情况,当n为0时返回1,当n大于0时返回0。对于x大于0的情况,算法通过初始化z并使用循环计算x的n次方,同时进行溢出和舍入检查,确保计算的准确性。最终,算法成功编译并部署,示例计算结果验证了其正确性。
2110
0
0
2025-01-27 09:02
二进制指数运算的解释与7个例子
本文介绍了二进制指数算法,通过七个示例详细说明了如何高效计算x的n次方。传统方法是将x自身相乘n次,而二进制指数法则通过将n分解为最大的2的幂和余数,显著减少了乘法次数。例如,计算x的4次方只需进行2次乘法,而不是4次。通过不断将n除以2并更新结果,算法能够快速得出x的任意次方,展示了其高效性和实用性。
1774
0
0
2025-01-27 09:02
汇编溢出、下溢和定点数学 | Solidity 0.8
本视频介绍了如何使用汇编语言检查溢出和下溢,并进行定点数学运算。首先,讲解了如何在加法和乘法中检测溢出,强调了在汇编中需要手动处理这些情况。接着,介绍了定点数学的概念,展示了如何对定点数进行四舍五入以及如何进行定点乘法,确保在乘法时处理溢出问题。最后,通过示例演示了如何在合约中实现这些功能,包括加法、减法、定点乘法和四舍五入的调用与测试。
1826
0
0
2025-01-27 09:02
汇编循环 | Solidity 0.8
本文介绍了如何在汇编语言中编写循环,包括for循环和while循环的基本示例。首先,通过for循环实现从1到n-1的整数求和,并通过while循环实现计数器的递增。接着,展示了如何使用for循环计算x的n次方,其中n为2的幂,并处理了n为0和n不是2的幂的边界情况。最后,通过示例验证了函数的正确性,包括对有效输入和无效输入的处理。
2052
0
0
2025-01-27 09:01
汇编错误 | Solidity 0.8
在汇编中抛出错误的方法是调用revert函数,并传入参数p和s,表示内存的起始和结束位置。若条件不满足(例如输入x大于10),则会执行revert,所有之前的状态更改将被撤销。在示例中,我们将p和s都设置为0,表示不返回任何错误信息。通过这种方式,可以在合约中有效地处理错误。
2051
0
0
2025-01-27 09:01
汇编 If 和 Switch 语句 | Solidity 0.8
本文介绍了如何在Solidity的汇编中编写条件语句,包括if语句和switch语句。使用if语句时,条件表达式的结果为正数表示真,零表示假;汇编中没有else语句,因此需要另写if语句处理其他情况。通过示例,展示了如何使用if语句返回两个数中的最小值,以及如何使用switch语句返回两个数中的最大值。最终,代码成功编译并部署,验证了最小值和最大值的计算。
2065
0
0
2025-01-27 09:01
汇编变量 | Solidity 0.8
本视频系列将介绍如何理解MakerDAO稳定币合约中的Rpower函数,该函数使用二进制指数法计算复利,且代码采用汇编语言编写。系列的第一部分将教授汇编语言的基本知识,包括如何声明和赋值局部变量。通过示例,展示了如何在汇编中声明变量并将其赋值给Solidity变量,最终成功编译并部署合约,验证了变量赋值的正确性。
3027
0
0
2025-01-27 09:01
‹
1
2
3
4
5
6
7
8
›
SC programmer
关注
贡献值: 5
学分: 10
https://www.smartcontract.engineer/
0 关注
11 粉丝
×
发送私信
请将文档链接发给晓娜,我们会尽快安排上架,感谢您的推荐!
发给:
内容:
提醒
检测到你当前登录的账号还未绑定手机号
请绑定后再发布
去绑定
×
编辑封面图
封面预览
取消
确认
×
创建课程
课程封面
编辑封面图
建议尺寸: 1920*1080
×
编辑封面图
封面预览
取消
确认