
WTF Vyper教程: 3. Function
Vyper 中的函数是合约内可执行的代码单元,只能在合约的模块范围内声明。所有的合约方法必须要声明函数是外部函数(external)还是内部函数(internal),如果不声明编译会失败.函数类型参考函数的类型是通过添加装饰器的方式来完成,Vyper 中总共有 6 种装饰器,我们将它分为 3 类:可见性、可变性和重入锁。可见性external: 用于标识外部函数,这类函数是合约接口的一部分,只能通过交易或从其他合约调用 internal: 用于标识内部函数,内部函数只由同一合约内的其他函数中可访问,通常通过 self.f() 对象调用, f()为方法名 可变性view: 表示函数是一个只读函数,可以读取但不修改合约状态pure: 表示函数是一个pure函数,既不会读取也不修改合约状态payable: 表示函数可以接收 ETH,可以读写合约状态. 只有标记为 @payable 的函数才能接收 ETH 转账重入锁nonreentrant("key"): 用于防止函数的重入,当尝试从外部合约再次调用加锁的函数时,交易会回滚函数基本结构一个基本的函数定义包括函数名、参数列表(可选)和...

WTF Vyper教程: 3. Function
Vyper 中的函数是合约内可执行的代码单元,只能在合约的模块范围内声明。所有的合约方法必须要声明函数是外部函数(external)还是内部函数(internal),如果不声明编译会失败.函数类型参考函数的类型是通过添加装饰器的方式来完成,Vyper 中总共有 6 种装饰器,我们将它分为 3 类:可见性、可变性和重入锁。可见性external: 用于标识外部函数,这类函数是合约接口的一部分,只能通过交易或从其他合约调用 internal: 用于标识内部函数,内部函数只由同一合约内的其他函数中可访问,通常通过 self.f() 对象调用, f()为方法名 可变性view: 表示函数是一个只读函数,可以读取但不修改合约状态pure: 表示函数是一个pure函数,既不会读取也不修改合约状态payable: 表示函数可以接收 ETH,可以读写合约状态. 只有标记为 @payable 的函数才能接收 ETH 转账重入锁nonreentrant("key"): 用于防止函数的重入,当尝试从外部合约再次调用加锁的函数时,交易会回滚函数基本结构一个基本的函数定义包括函数名、参数列表(可选)和...

WTF Vyper教程: 2. ValueTypes
WTF Vyper 教程: 2. 值类型我最近在重新学Vyper,巩固一下细节,也写一个“Vyper极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特: @0x77 所有代码和教程开源在github: github.com/WTFAcademy/WTF-VyperVyper 提供对两类变量类型的访问:值(Value): 合约中变量的任何使用都将直接传递其值。引用(Reference): 合约中变量的任何使用都将传递对内存中地址的引用,而不是值存储在那里。本节中我们只介绍值类型,引用类型将在第 4 节中详细介绍。值类型布尔型bool: true 或 false数字 - 整型int128: 有符号 128 位整数int256: 有符号 256 位整数uint8: 无符号 8 位整数uint256: 无符号 256 位整数数字 - 浮点数decimal: 带符号的浮点数,精度为 10 位小数地址address: 20 字节的十六进制数,带有 0x 前缀。字节数组bytes32: 32 字节数组,通常用于储存 256 位 keccak 哈希值Bytes[N]: 可...

WTF Vyper教程: 2. ValueTypes
WTF Vyper 教程: 2. 值类型我最近在重新学Vyper,巩固一下细节,也写一个“Vyper极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特: @0x77 所有代码和教程开源在github: github.com/WTFAcademy/WTF-VyperVyper 提供对两类变量类型的访问:值(Value): 合约中变量的任何使用都将直接传递其值。引用(Reference): 合约中变量的任何使用都将传递对内存中地址的引用,而不是值存储在那里。本节中我们只介绍值类型,引用类型将在第 4 节中详细介绍。值类型布尔型bool: true 或 false数字 - 整型int128: 有符号 128 位整数int256: 有符号 256 位整数uint8: 无符号 8 位整数uint256: 无符号 256 位整数数字 - 浮点数decimal: 带符号的浮点数,精度为 10 位小数地址address: 20 字节的十六进制数,带有 0x 前缀。字节数组bytes32: 32 字节数组,通常用于储存 256 位 keccak 哈希值Bytes[N]: 可...
WTF Vyper 入门教程: 1. Hello Vyper
WTF Vyper教程: 1. Hello Vyper 我最近在重新学Vyper,巩固一下细节,也写一个“Vyper极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特: @0x77 所有代码和教程开源在github: github.com/WTFAcademy/WTF-VyperVyper简述Vyper 是一种面向合约的类似于 Python 的编程语言,专为EVM设计。与Solidity不同,Vyper强调简单性和安全性,而Solidity则提供更多灵活性和复杂特性。开发环境与Solidity不同,Remix只支持Vyper 0.2.16 以下的版本,而最新版是Vyper 0.3.10,因此我们不得不转向其他开发环境。 这里,我们主要介绍两个开发环境本地开发(推荐),需要在本地安装Vyper和ApeWorx。浏览器IDE:链接本地开发1. 安装Vyper使用 Docker 和 PIP 可安装Vyper。此处使用 PIP,其他安装方法见Vyper官方文档。pip3 install vyper # 或 pip3 install vyper==0.3.9 安装的...
WTF Vyper 入门教程: 1. Hello Vyper
WTF Vyper教程: 1. Hello Vyper 我最近在重新学Vyper,巩固一下细节,也写一个“Vyper极简入门”,供小白们使用(编程大佬可以另找教程),每周更新1-3讲。 推特: @0x77 所有代码和教程开源在github: github.com/WTFAcademy/WTF-VyperVyper简述Vyper 是一种面向合约的类似于 Python 的编程语言,专为EVM设计。与Solidity不同,Vyper强调简单性和安全性,而Solidity则提供更多灵活性和复杂特性。开发环境与Solidity不同,Remix只支持Vyper 0.2.16 以下的版本,而最新版是Vyper 0.3.10,因此我们不得不转向其他开发环境。 这里,我们主要介绍两个开发环境本地开发(推荐),需要在本地安装Vyper和ApeWorx。浏览器IDE:链接本地开发1. 安装Vyper使用 Docker 和 PIP 可安装Vyper。此处使用 PIP,其他安装方法见Vyper官方文档。pip3 install vyper # 或 pip3 install vyper==0.3.9 安装的...