Skip to content

Latest commit

 

History

History
134 lines (97 loc) · 8.65 KB

keien.md

File metadata and controls

134 lines (97 loc) · 8.65 KB
timezone
Asia/Shanghai

KeienWang

  1. 自我介绍
  • 嗨,你好,我是 keien。
  • 热爱编程、唱,跳,rap,篮球。
  • 热爱计算机科学和IT互联网事业,希望能成为一名优秀的开发者。
  • 我们正在让这个世界变得更加美好,通过代码的重复使用和延展构建完美体系。
  •  We're making the world a better place. Through constructing elegant hierarchies for maximum code reuse and extensibility.
  1. 你认为你会完成本次残酷学习吗?
  • 我坚信我会

Notes

2024.09.23

今天学习了Solidity的基本语法和数据类型。掌握了变量声明、基本运算符和控制结构。
  • 变量声明: 学习了如何声明和使用不同类型的变量,包括整型(int, uint)、布尔型(bool)、地址(address)等。
  • 基本运算符: 掌握了算术运算符(+, -, *, /, %)、比较运算符(==, !=, >, <, >=, <=)和逻辑运算符(&&, ||, !)的使用。
  • 控制结构: 学习了if-else条件语句、for和while循环的使用方法。

2024.09.24

  • 合约声明: 学习了如何使用 contract 关键字声明一个智能合约,以及合约的基本结构。
  • 状态变量: 了解了如何在合约中声明和使用状态变量,这些变量用于存储合约的持久数据。
  • 函数: 学习了如何定义和使用函数,包括公共函数、私有函数、内部函数和外部函数的区别。
  • 事件: 掌握了如何声明和触发事件,以及事件在智能合约中的重要作用。
  • 编写了一个简单的存储合约,包含状态变量、setter和getter函数,以及一个事件来记录状态变化。
  • 创建了一个基本的投票合约,使用状态变量存储候选人和投票结果,通过函数实现投票逻辑,并使用事件记录每次投票。

2024.09.25

  • 函数修饰符: 学习了如何使用修饰符(Modifiers)来改变函数的行为,了解了常见的修饰符如onlyOwner、require等的使用方法。
  • 错误处理: 掌握了Solidity中的错误处理机制,包括使用require、assert和revert来进行条件检查和错误处理。
  • 自定义错误: 学习了如何定义和使用自定义错误,以提高合约的可读性和调试效率。

2024.09.26

今天学习了Solidity中的事件和日志:
  • 事件(Events): 学习了如何在智能合约中定义和触发事件,了解了事件在记录合约操作和状态变化中的重要作用。
  • 日志(Logs): 掌握了如何使用事件生成日志,并在区块链上存储和查询这些日志。
  • 事件参数: 学习了事件参数的使用方法,包括indexed参数的作用和限制。

2024.09.27

今天学习了Solidity中的合约继承和多态:
  • 合约继承: 学习了如何使用Solidity中的继承机制来复用代码,了解了继承的基本语法和规则。
  • 多重继承: 掌握了Solidity中的多重继承特性,学习了如何解决多重继承中的菱形继承问题。
  • 重载和重写: 学习了函数重载和重写的概念,了解了如何在子合约中重写父合约的函数。
  • 抽象合约: 了解了抽象合约的概念,学习了如何定义和使用抽象合约来实现接口和多态。
  • 接口(Interfaces): 学习了如何定义和实现接口,了解了接口在智能合约设计中的重要作用。

2024.09.28

今天继续深入学习Solidity,主要学习了以下内容:
  • 库(Libraries): 学习了如何使用库来组织和复用代码,了解了库函数的调用方式和库的部署方式。
  • 库的特性: 掌握了库的特性,包括库函数是静态调用的,库不能有状态变量,库不能继承或被继承等。
  • 使用库的优势: 了解了使用库可以减少代码重复,提高代码的可读性和可维护性。

2024.09.29

今天学习了Solidity中的合约部署和测试:
  • 合约部署: 学习了如何使用Truffle框架部署智能合约,了解了部署脚本的编写和配置。
  • 部署环境: 掌握了不同部署环境的配置,包括本地开发网络、测试网络(如Ropsten、Rinkeby)和主网。
  • 合约交互: 学习了如何使用Web3.js与已部署的智能合约进行交互,了解了常见的交互方法和事件监听。
  • 单元测试: 学习了如何为智能合约编写单元测试,使用Truffle框架进行测试驱动开发(TDD),确保合约的正确性和可靠性。

2024.09.30

今天学习了Solidity中的合约优化和Gas费用管理:
  • Gas费用: 学习了以太坊网络中的Gas机制,了解了Gas的计算方法和影响因素。
  • 优化合约代码: 掌握了几种常见的合约优化技巧,如减少存储操作、使用更高效的数据结构和函数优化等,以降低Gas费用。
  • Gas限制和Gas价格: 了解了Gas限制和Gas价格的概念,学习了如何在部署和调用合约时设置合理的Gas限制和Gas价格。

2024.10.01

今天学习了Solidity中的数据结构和存储模式:
  • 映射(Mappings): 学习了映射的概念和用法,了解了如何使用映射来存储键值对,并掌握了映射的常见应用场景。
  • 数组(Arrays): 掌握了数组的声明和使用方法,包括定长数组和动态数组的区别和操作。
  • 结构体(Structs): 学习了如何定义和使用结构体来组织复杂数据,了解了结构体在智能合约中的应用。
  • 存储模式: 了解了Solidity中的存储模式,包括storage、memory和calldata的区别和使用场景。

2024.10.02

今天学习了Solidity中的合约安全性和最佳实践:
  • 重入攻击防范: 学习了重入攻击的原理和防范措施,了解了如何使用检查-效果-交互模式(Check-Effects-Interactions Pattern)来防止重入攻击。
  • 整数溢出和下溢: 掌握了如何使用SafeMath库来防止整数溢出和下溢,确保数学运算的安全性。
  • 权限控制: 学习了如何使用修饰符和访问控制列表(ACL)来实现合约的权限管理,确保只有授权用户可以执行特定操作。

2024.10.03

今天学习了Solidity中的调试和错误处理:
  • 调试工具: 学习了常用的Solidity调试工具,如Remix IDE和Truffle Debugger,了解了如何使用这些工具进行智能合约的调试。
  • 日志和事件: 掌握了如何使用日志和事件来记录合约的运行状态,帮助调试和分析合约行为。
  • 错误处理: 学习了Solidity中的错误处理机制,包括使用require、assert和revert进行条件检查和错误处理。
  • 自定义错误: 了解了如何定义和使用自定义错误,以提高合约的可读性和调试效率。

2024.10.04

今天学习了Solidity中的合约交互和外部调用:
  • 合约间调用: 学习了如何在Solidity中实现合约间的调用,了解了call、delegatecall和staticcall的区别和使用场景。
  • 接口(Interfaces): 掌握了如何定义和使用接口来实现合约间的交互,确保合约的模块化和可扩展性。
  • 外部合约调用: 学习了如何调用外部合约的方法,并处理可能出现的错误和异常情况。
  • 安全性考虑: 了解了在进行外部调用时需要注意的安全性问题,如重入攻击和调用失败处理。

2024.10.05

今天学习了Solidity中的高级主题和优化技巧:
  • 内联汇编(Inline Assembly): 学习了如何在Solidity中使用内联汇编来编写更底层和高效的代码,了解了内联汇编的基本语法和使用场景。
  • 优化存储布局: 掌握了如何优化合约的存储布局,以减少Gas费用和提高合约的执行效率。
  • 事件索引(Event Indexing): 学习了如何使用事件索引来提高事件查询的效率,了解了indexed关键字的作用和限制。

2024.10.06

今天学习了Solidity中的去中心化应用(DApp)开发:
  • 前端与智能合约交互: 学习了如何使用Web3.js库在前端与智能合约进行交互,了解了常见的交互方法和事件监听。
  • Metamask集成: 掌握了如何在DApp中集成Metamask钱包,实现用户身份验证和交易签名。
  • 用户界面设计: 学习了如何设计和实现用户友好的界面,展示智能合约的数据和功能。
  • 数据持久化: 了解了如何在前端持久化数据,并与智能合约的数据进行同步。

2024.10.07

2024.10.08

2024.10.09

2024.10.10