创建文章

We are looking for publications that demonstrate building dApps or smart contracts!
See the full list of Gitcoin bounties that are eligible for rewards.

Article Thumbnail

Algorand v2.0.7 的新特性

本周早些时候,Algorand v2.0.7 发布至 MainNet 和 TestNet。同时,Algorand API 亦获更新 (v2 API),引入全新索引器 API(索引器 v2),可在区块链上搜索数据。

新增功能

Indexer v2

Indexer v2 的发布带来了在区块链上高效查询数据的新功能。例如,您可以通过前缀搜索注释字段,还可以搜索交易特定资产的账户,或者搜索某类签名(如单一签名、多重签名、逻辑签名);用例很多,这里仅列举几个。可在 Indexer v2 功能指南中浏览完整功能列表,其中每个功能都附了各个 SDK 的代码示例。务必先安装索引器,否则无法使用这些功能。

v2 API

本次发布还对官方 Algorand SDK 做了一些时尚而现代的更新,改善 Algorand 常用函数的体验,并为今年晚些时候推出的新功能奠定基础。可以访问 v2 迁移指南了解主要变化。我们还更新了开始构建章节,其中示例已更新至 v2,可帮助您着手第一笔交易。我们将继续更新文档功能页面,将 v1 代码示例迁移至 v2,并会全程共享更新。

那么,“时尚而现代的更新”到底是什么呢?此处仅以 Python SDK 为例,向您展示 V2 的诸多改进。

V2 如何改善交易创建(Python 示例)

Algorand 上的每笔交易都需要一组网络相关的参数,例如创世哈希首个最后一个有效轮,以及建议费用。在 v1 中,用户通过调用 suggested_params 方法取得这些参数,将各个值作为独立参数提供给交易生成函数(示例)。在 v2 里,这些建议的网络相关参数作为一个独立对象返回,并以单个参数的形式提供给交易生成函数。

我们以一个简单的付款交易来阐述其中差异。下面的代码展示了 Alice 向 Bob 支付 1 Algo 的构造过程在 v2 和 v1 中的不同。假定 client 早些时候已实例化,alicebob 是 Algorand 地址。这段代码两个版本都一样。

from algosdk.v2client import algod
from algosdk.future.transaction import PaymentTxn
...
# Instantiate params object and give full object to maker function
params = client.suggested_params()
unsigned_txn = PaymentTxn(alice, params, bob, 1000000)
from algosdk import algod
from algosdk.transaction import PaymentTxn
...
# Pull relevant network params to be supplied to maker function.
params = client.suggested_params()
genesis_hash = params.get('genesishashb64')
first_valid = params.get('lastRound')
last_valid = first_valid + 1000
fee = params.get('fee')
unsigned_txn = transaction.PaymentTxn(alice, fee, first_valid, last_valid, genesis_hash, bob, 1000000)

在 v2 API 中,我们调用 suggested_params 函数,将其返回值直接传递给交易生成函数。而在 v1 API 中,我们不得不手动将 suggested_params 返回值一个个列为交易生成函数的参数。考虑到创建交易是 Algorand 开发人员最常见的操作,v2 方法的优势虽然看似微小,但却十分重要。

这种结构也更符合区别通用交易字段和特定类型交易独有字段的思维模式。这种思维模式下,不仅代码量减少了,创建交易所需的认知负担也减轻了。建议参数是正确参数这种最常见的情形里,这一点体现得尤为真切。

如果我想离线创建交易,该怎么办?

如果无法访问网络或者需要高度定制,您随时可以用自己的值实例化 SuggestedParams 对象。参见此处的 SuggestedParams 对象

其他注意事项

我们鼓励您将代码迁移至 v2,希望您发现这些更新可以提升您的整体体验。文档中的所有代码示例将逐步更改,反映 v2 的种种变化。我们将在相关更新可用时将之共享至各个资源,帮助您完成迁移。