
Starknet 春季 DeFi 激励计划
原文:Starknet Foundation Introduces: The Start of DeFi Spring 翻译及校对:「Starknet 中文社区」 📑 转载请注明出处 🕹️精选速览「Starknet 春季 DeFi 激励计划」4000 万 STRK 奖励用户3 月 7 日开始领取激励生态任务获得专属 NFT引言2023 年 11 月 9 日,Starknet 基金会宣布 Starknet DeFi 委员会成立及其成员任命,该委员会的任务是促进 Starknet DeFi 增长。 经过两个月的内部和外部研究后,Starknet 基金会非常兴奋地宣布推出为实现这些目标而量身定做的计划。 Starknet 基金会与 OpenBlock Labs 的合作,推出「Starknet 春季 DeFi 激励计划」。本为期六到八个月的项目,在此期间将向参与 Starknet 上 DeFi 协议的参与者分发 4000 万 STRK。 这是 DeFi 委员会扩大 Starknet DeFi 规模系列举措的第一步。第一部分:STRK 分发DeFi 委员会计划在接下来的六到八个月内,D...

Starknet 中文社区 2023 年终汇总
🎀 概述关注回顾 Starknet 在 2023 年的里程碑事件以及「Starknet 中文社区」的丰硕成果。 在网络生态中,Starknet 实现了一系列重要版本和重要事件更新,不仅在技术上取得了显著进展,而且扩展了众多核心开源技术栈。在生态系统中,推进发展 Starknet 优秀项目,在 TVL 和用户量等数据方面实现了可观增长。 「Starknet 中文社区」在过去一年中同样达成令人瞩目的进步,输入内容包括博客翻译、原创文章和视频、组织各类活动、合作 Cairo 训练营等各类活动,这些重要内容显示出社区成员的积极贡献和创造力,以及中文社区的独特魅力,为中国用户提供更多全面了解 Starknet 区块链的方式。 StarkWare 和 Starknet 团队和生态合作伙伴的共同努力实现 Cairo 1.0 成功升级,而 Cairo 开发者数量在过去一年中取得了巨大增长,这一成就让更多区块链开发者看到了 Starknet 背后团队的技术实力,也从侧面反映出 Starknet 生态系统中合作伙伴的紧密协作。 总而言之,Starknet 和「Starknet 中文社区」在生态、技...

聚沙成塔:StarkWare 年度回顾
原文:From Milestones to Masterstrokes: StarkWare’s Year in Review 翻译及校对:「Starknet 中文社区」 📑 转载请注明出处 🕹️不论是现在还是将来,STARK 技术都被视为助力去中心化应用(dApps)在以太坊上实现扩展和繁荣的秘密武器。概要:Starknet 为复杂、高计算要求、创新型的 DeFi 平台、链上游戏、动态 NFT 等应用奠定了基础。Starknet 在所有 L2(以及一些 L1)中,持续拥有增长最快的开发者生态系统。StarkWare 在 2023 年开源了 Stone 证明器、Starknet 排序器和 Papyrus 全节点等关键元素。继续阅读,了解我们的亮点以及 2023 年 Starknet 生态系统的整体进展。去中心化和社区STARK 技术:达到新高度在以太坊上的创新开源时刻:为协议设定新标准Starknet 应用链社区参与和活动去中心化与社区扩展Starknet 上的游戏热潮由于 L1 在规模、用户体验和高成本等方面的限制,创建成功的链上游戏几乎是不可能实现的事情。但随着有效性 R...
「Starknet 中文」社区致力于 Starknet 在中文世界发展,提供最全生态资讯。

Starknet 春季 DeFi 激励计划
原文:Starknet Foundation Introduces: The Start of DeFi Spring 翻译及校对:「Starknet 中文社区」 📑 转载请注明出处 🕹️精选速览「Starknet 春季 DeFi 激励计划」4000 万 STRK 奖励用户3 月 7 日开始领取激励生态任务获得专属 NFT引言2023 年 11 月 9 日,Starknet 基金会宣布 Starknet DeFi 委员会成立及其成员任命,该委员会的任务是促进 Starknet DeFi 增长。 经过两个月的内部和外部研究后,Starknet 基金会非常兴奋地宣布推出为实现这些目标而量身定做的计划。 Starknet 基金会与 OpenBlock Labs 的合作,推出「Starknet 春季 DeFi 激励计划」。本为期六到八个月的项目,在此期间将向参与 Starknet 上 DeFi 协议的参与者分发 4000 万 STRK。 这是 DeFi 委员会扩大 Starknet DeFi 规模系列举措的第一步。第一部分:STRK 分发DeFi 委员会计划在接下来的六到八个月内,D...

Starknet 中文社区 2023 年终汇总
🎀 概述关注回顾 Starknet 在 2023 年的里程碑事件以及「Starknet 中文社区」的丰硕成果。 在网络生态中,Starknet 实现了一系列重要版本和重要事件更新,不仅在技术上取得了显著进展,而且扩展了众多核心开源技术栈。在生态系统中,推进发展 Starknet 优秀项目,在 TVL 和用户量等数据方面实现了可观增长。 「Starknet 中文社区」在过去一年中同样达成令人瞩目的进步,输入内容包括博客翻译、原创文章和视频、组织各类活动、合作 Cairo 训练营等各类活动,这些重要内容显示出社区成员的积极贡献和创造力,以及中文社区的独特魅力,为中国用户提供更多全面了解 Starknet 区块链的方式。 StarkWare 和 Starknet 团队和生态合作伙伴的共同努力实现 Cairo 1.0 成功升级,而 Cairo 开发者数量在过去一年中取得了巨大增长,这一成就让更多区块链开发者看到了 Starknet 背后团队的技术实力,也从侧面反映出 Starknet 生态系统中合作伙伴的紧密协作。 总而言之,Starknet 和「Starknet 中文社区」在生态、技...

聚沙成塔:StarkWare 年度回顾
原文:From Milestones to Masterstrokes: StarkWare’s Year in Review 翻译及校对:「Starknet 中文社区」 📑 转载请注明出处 🕹️不论是现在还是将来,STARK 技术都被视为助力去中心化应用(dApps)在以太坊上实现扩展和繁荣的秘密武器。概要:Starknet 为复杂、高计算要求、创新型的 DeFi 平台、链上游戏、动态 NFT 等应用奠定了基础。Starknet 在所有 L2(以及一些 L1)中,持续拥有增长最快的开发者生态系统。StarkWare 在 2023 年开源了 Stone 证明器、Starknet 排序器和 Papyrus 全节点等关键元素。继续阅读,了解我们的亮点以及 2023 年 Starknet 生态系统的整体进展。去中心化和社区STARK 技术:达到新高度在以太坊上的创新开源时刻:为协议设定新标准Starknet 应用链社区参与和活动去中心化与社区扩展Starknet 上的游戏热潮由于 L1 在规模、用户体验和高成本等方面的限制,创建成功的链上游戏几乎是不可能实现的事情。但随着有效性 R...
「Starknet 中文」社区致力于 Starknet 在中文世界发展,提供最全生态资讯。

Subscribe to Starknet 中文

Subscribe to Starknet 中文
Share Dialog
Share Dialog


<100 subscribers
<100 subscribers
作者:Darington Nnam 原文:Journey through Cairo III — A deep dive into Strings and Felts with Starkling 翻译:Louis Wang 校对:「StarkNet 中文社区」
欢迎来到我们 「Cairo 之旅」系列的第三课!在上篇文章中,我们完成了 Starklings 语法部分的挑战,了解 Cairo 基本内容,包括命名空间 (Namespace)、结构体 (Struct) 等。今天我们将深入研究字符串 (Strings) 和整数 Felts。
像往常一样,如果你是中途加入的,建议从头开始看我们的文章。
不像 Solidity 有相当多的各种数据类型,如 uints、strings、bools 等,Cairo 只有一个数据类型:felts。
Felts 代表字段元素。简单来说,它们是无符号的整数,最高精度 76 位小数。
虽然使用 felts 有很多优点,但我觉得它们也有一些恼人的缺点。比如说:
1. 它们是一个 252 位的整数,当我们想把一个 uint256 的值放入其中时,就会出现问题。我们可以把 felts 组合成 tuples 来解决这个问题。
2. 据 Cairo 的官方文档,在 Cairo 中,基本的数据类型是一个范围为 0≤x<P 的整数,其中 P 是一个素数(一般为 2^192+1)。这可能会给除法带来一些非常严重的问题,因为所有的除法运算 (x/y),都必须满足这个条件:
(x/y) * y == x
对于那些没有数学背景的人来说,上面的等式意味着,如果我们说 10 除以 5,其中 x=10,y=5,无论我们得到什么答案,当乘以 y(也就是5)时,必须返回 x(也就是10)。所以 10/5=2,而 2*5=10。
但如果我们要做 10/3 呢?在其他 CPU 中,这应该是 3(忽略余数)或 3.333333333。但它不满足我们上面的方程式,所以 Cairo 这里的结果是一串奇怪的数字(实际上是2/(P+1))。
为了解决这个问题,Cairo 有一个库,其中包含一组预写的 Cairo 代码,我们可以导入并直接在代码中使用。这些预写函数的一个例子是这里的 unsigned_div_rem,它可以用于安全除法,同时返回整数和除法后的剩余部分。
如果你想更深入地了解 Felts 是如何工作的,可以查看这里的文档。在了解 Felts 的一般功能后,让我们直接深入到字符串中去吧!
虽然我们称它们为字符串 (Strings),但 Cairo 目前一般不支持字符串。Cairo 支持的是我们称之为短字符串 (Short Strings) 的东西。
短字符串是指长度最多为 31 个字符的字符串,因此可以放入一个字段元素。虽然它们看起来像字符串,但它们在内部用 ASCII 码编码,因此可以用 felts 表示。

这个练习会返回一系列的变量,我们要指定短字符串来通过这些变量测试。
为了通过这个测试我们只需复制粘贴测试中的短字符串:

成功通过!

但这样我们就会错过一些隐含的重要信息。我们更应该做的是创建一个 Python 脚本,将 felt 转换为字符串,将十六进制转换为字符串,这样我们就可以看到短字符串的生成。
为了完成这项工作,需要:
1. 确保你的设备中安装了 python3。
2. 创建一个名为 utils.py 的文件,并在其中粘贴下面的代码。
MAX_LEN_FELT = 31
def str_to_felt(text):
if len(text) > MAX_LEN_FELT:
raise Exception("Text length too long to convert to felt.")
return int.from_bytes(text.encode(), "big")
def felt_to_str(felt):
length = (felt.bit_length() + 7) // 8
return felt.to_bytes(length, byteorder="big").decode("utf-8")
def str_to_felt_array(text):
return [str_to_felt(text[i:i+MAX_LEN_FELT]) for i in range(0, len(text), MAX_LEN_FELT)]
def uint256_to_int(uint256):
return uint256[0] + uint256[1]*2**128
def uint256(val):
return (val & 2128-1, (val & (2256-2**128)) >> 128)
def hex_to_felt(val):
return int(val, 16)
打开终端运行以下命令:
python3 -i utils.py
终端应该这样显示:

接着我们尝试将 felt 转换成短字符串:

下一步将十六进制数转换成字符串,不过需要先将十六进制转换成 felt,再转换成短字符串:

很好!这证明了短字符串只是编码的 ASCII,因此可以用等价的整数和十六进制数进行互换。

你知道短字符串可以进行数学运算吗?它们只是被编码的 ASCII 码,因此你可以用它们做任何你可以用整数做的事情,非常神奇!
现在让我们对短字符串做一些数学运算,传递给 decode_cipher1 函数。

如果这看起来很奇怪,我希望你能忘记这些是短字符串,把它们当作数字就好,而且它也遵循四则运算:
plaintext = ciphertext + key
key = plaintext - ciphertext
已知 plaintext =‘Twinkle Twinkle Little Star’,那么:
key = 'Twinkle Twinkle Little Star' - ciphertext
类似的在 decode_cipher2 函数中,我们需要求解 ciphertext:

已知 plaintext = ‘Magic Starknet Money’,根据四则运算求解:
plaintext = 1337 * ciphertext + 0xc0de
ciphertext = (plaintext - 0xc0de) / 1337
OK!通过测试!

恭喜你在成为 Cairo 专家的道路上取得了重大进展!你可以继续尝试 Starklings 教程的其他部分,期待我们的下一节课。
下篇文章,我们将学习数据存储。如果觉得本教程对你有帮助,转发分享给其他人吧~
作者:Darington Nnam 原文:Journey through Cairo III — A deep dive into Strings and Felts with Starkling 翻译:Louis Wang 校对:「StarkNet 中文社区」
欢迎来到我们 「Cairo 之旅」系列的第三课!在上篇文章中,我们完成了 Starklings 语法部分的挑战,了解 Cairo 基本内容,包括命名空间 (Namespace)、结构体 (Struct) 等。今天我们将深入研究字符串 (Strings) 和整数 Felts。
像往常一样,如果你是中途加入的,建议从头开始看我们的文章。
不像 Solidity 有相当多的各种数据类型,如 uints、strings、bools 等,Cairo 只有一个数据类型:felts。
Felts 代表字段元素。简单来说,它们是无符号的整数,最高精度 76 位小数。
虽然使用 felts 有很多优点,但我觉得它们也有一些恼人的缺点。比如说:
1. 它们是一个 252 位的整数,当我们想把一个 uint256 的值放入其中时,就会出现问题。我们可以把 felts 组合成 tuples 来解决这个问题。
2. 据 Cairo 的官方文档,在 Cairo 中,基本的数据类型是一个范围为 0≤x<P 的整数,其中 P 是一个素数(一般为 2^192+1)。这可能会给除法带来一些非常严重的问题,因为所有的除法运算 (x/y),都必须满足这个条件:
(x/y) * y == x
对于那些没有数学背景的人来说,上面的等式意味着,如果我们说 10 除以 5,其中 x=10,y=5,无论我们得到什么答案,当乘以 y(也就是5)时,必须返回 x(也就是10)。所以 10/5=2,而 2*5=10。
但如果我们要做 10/3 呢?在其他 CPU 中,这应该是 3(忽略余数)或 3.333333333。但它不满足我们上面的方程式,所以 Cairo 这里的结果是一串奇怪的数字(实际上是2/(P+1))。
为了解决这个问题,Cairo 有一个库,其中包含一组预写的 Cairo 代码,我们可以导入并直接在代码中使用。这些预写函数的一个例子是这里的 unsigned_div_rem,它可以用于安全除法,同时返回整数和除法后的剩余部分。
如果你想更深入地了解 Felts 是如何工作的,可以查看这里的文档。在了解 Felts 的一般功能后,让我们直接深入到字符串中去吧!
虽然我们称它们为字符串 (Strings),但 Cairo 目前一般不支持字符串。Cairo 支持的是我们称之为短字符串 (Short Strings) 的东西。
短字符串是指长度最多为 31 个字符的字符串,因此可以放入一个字段元素。虽然它们看起来像字符串,但它们在内部用 ASCII 码编码,因此可以用 felts 表示。

这个练习会返回一系列的变量,我们要指定短字符串来通过这些变量测试。
为了通过这个测试我们只需复制粘贴测试中的短字符串:

成功通过!

但这样我们就会错过一些隐含的重要信息。我们更应该做的是创建一个 Python 脚本,将 felt 转换为字符串,将十六进制转换为字符串,这样我们就可以看到短字符串的生成。
为了完成这项工作,需要:
1. 确保你的设备中安装了 python3。
2. 创建一个名为 utils.py 的文件,并在其中粘贴下面的代码。
MAX_LEN_FELT = 31
def str_to_felt(text):
if len(text) > MAX_LEN_FELT:
raise Exception("Text length too long to convert to felt.")
return int.from_bytes(text.encode(), "big")
def felt_to_str(felt):
length = (felt.bit_length() + 7) // 8
return felt.to_bytes(length, byteorder="big").decode("utf-8")
def str_to_felt_array(text):
return [str_to_felt(text[i:i+MAX_LEN_FELT]) for i in range(0, len(text), MAX_LEN_FELT)]
def uint256_to_int(uint256):
return uint256[0] + uint256[1]*2**128
def uint256(val):
return (val & 2128-1, (val & (2256-2**128)) >> 128)
def hex_to_felt(val):
return int(val, 16)
打开终端运行以下命令:
python3 -i utils.py
终端应该这样显示:

接着我们尝试将 felt 转换成短字符串:

下一步将十六进制数转换成字符串,不过需要先将十六进制转换成 felt,再转换成短字符串:

很好!这证明了短字符串只是编码的 ASCII,因此可以用等价的整数和十六进制数进行互换。

你知道短字符串可以进行数学运算吗?它们只是被编码的 ASCII 码,因此你可以用它们做任何你可以用整数做的事情,非常神奇!
现在让我们对短字符串做一些数学运算,传递给 decode_cipher1 函数。

如果这看起来很奇怪,我希望你能忘记这些是短字符串,把它们当作数字就好,而且它也遵循四则运算:
plaintext = ciphertext + key
key = plaintext - ciphertext
已知 plaintext =‘Twinkle Twinkle Little Star’,那么:
key = 'Twinkle Twinkle Little Star' - ciphertext
类似的在 decode_cipher2 函数中,我们需要求解 ciphertext:

已知 plaintext = ‘Magic Starknet Money’,根据四则运算求解:
plaintext = 1337 * ciphertext + 0xc0de
ciphertext = (plaintext - 0xc0de) / 1337
OK!通过测试!

恭喜你在成为 Cairo 专家的道路上取得了重大进展!你可以继续尝试 Starklings 教程的其他部分,期待我们的下一节课。
下篇文章,我们将学习数据存储。如果觉得本教程对你有帮助,转发分享给其他人吧~
No activity yet