问题标签 [nearprotocol]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
408 浏览

assemblyscript - 如何在 AssemblyScript / Near 中打印数组的长度?

我正在附近尝试简单的汇编脚本,似乎找不到打印数组长度的方法。这是最小的复制品:

不编译

虽然toString()明确存在于 上i32,例如以下代码段编译并工作:

0 投票
1 回答
53 浏览

nearprotocol - 如何从对智能合约的调用中返回一个值?

是否有任何示例可用于从修改链上存储的调用中返回值?

从读取中返回值当然不是问题,但有人提到从调用中获得返回也是可能的。

0 投票
3 回答
190 浏览

nearprotocol - 如何在与 Nearlib 的交易中附加价值(存款)?

假设我有一个合约函数,它期望通过某个交易发送一定数量的 near ,该函数被称为create_ordercreate_order带有几个参数。

我在前端的名称下设置了我的合同myContract

我想打电话myContract.create_order({...}),但交易失败,因为这个方法调用没有附加正确数量的 NEAR 令牌。

如何为交易分配一定的存款价值?

0 投票
1 回答
61 浏览

nearprotocol - 如何使用 Nearlib.js 获取某个账户的余额

假设我们像这样初始化并且用户已经登录:

我希望能够使用以下方式获得帐户的 NEAR 余额:

或许

0 投票
1 回答
74 浏览

nearprotocol - 如何从持久映射中检索值数组?

我创建了一个持久映射并设置了一个键/值对;但是,当我稍后尝试使用 检索值.values数组时,将返回一个包含 0 个项目的空数组。

我仔细检查了是否包含我正在搜索的键,并且它们是。

这是我的代码:
let members = new PersistentMap<string, Member>('memberss');

members.set(summoner , member2)

let numMembers = members.values(`satosh`, `rico`, -1, true);

我也尝试使用第二个字符串键而不是 null,但仍然返回一个空数组。

我该如何解决这个问题?

0 投票
2 回答
79 浏览

smartcontracts - 查看与更改智能合约的方法

当我在智能合约中发现两种类型的功能时,我一直在阅读文档并评估示例:查看和更改方法。

// 视图方法是只读的。它们不会修改状态,但通常会返回一些值。

// change 方法可以修改状态。但是您在调用时不会收到返回值。

来自https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min

这些要求有多严格?如果这些假设不成立(例如,在视图方法中修改状态或在更改方法中未进行任何修改),将会发生什么?

0 投票
2 回答
531 浏览

assemblyscript - 在 AssemblyScript 中实例化数组的三种不同方法

我正在编写一个智能合约并希望使用数组来操作数据,但是查看 AssemblyScript 文档,我不确定最好的方法。

对我来说似乎很好,只需使用:

但是当我查阅汇编脚本文档时,推荐了三种创建数组的方法:

我什么时候想使用一种类型的实例化而不是另一种类型的实例化?为什么我不总是使用我一开始介绍的版本?

0 投票
1 回答
38 浏览

blockchain - 如何创建具有特定私钥的帐户?

我想给一个特定的私钥一个账户名并注册到 Near 区块链,怎么做?

0 投票
1 回答
54 浏览

nearprotocol - 处理来自 nearlib 的账户和交易签名

我有一份合同叫做exchange. 用户Bob想要通过放置 的方式花钱near tokens购买头寸。 有一个名为 的字段,在这种情况下,合约必须证明某个地址归某个地址所有,这一点很重要。marketsOrderOrderownerorderBob

当前处理发送到exchange的事务的流程类似于:

exchange合约导入一个struct被调用的Order.

Order看起来像:

Exchange在这种情况下,是实现 mod 的合约orderExchangeplace_new_order一种方法,我希望能够确保这Bob是发送交易的人:

现在的问题是,以防万一,使用这个 nearlib 代码env::current_account_id()将始终返回exchangecurrent_account_id. 这是有道理的,因为所有登录所做的只是创建一个access_key允许exchange以 的名义做几件事,Bob但它仍在Exchange签署交易。

这里的问题是:我如何确保该交易所知道那Bob是初始化交易的人?

一种可行的方法是有意义的:

  • Bob用他的私钥签署每笔交易,我在这里的问题是:如何?

这将导致类似 Metamask 的 UX 问题,在每个 tx 上签名都是错误的 UX。

我建议如下:

  • Bob使用一种deposit方法来存入一定数量的near-tokensonexchange并且exchange只要它可以证明它通过由 签名的“登录访问令牌”来证明它正在这样做Bob,那么这里的问题再次是:这可能吗?如果是这样怎么办?
0 投票
1 回答
63 浏览

nearprotocol - 返回环境帐户 ID 时出错

如果我有以下方法来测试predecessor_account_id行为

并尝试从前端调用它

我收到以下错误:

未捕获(承诺中)错误:查询调用/通量协议/get_account_id 失败:wasm 执行失败并出现错误:FunctionCallError(HostError(ProhibitedInView("predecessor_account_id")))。
{ "error": "wasm 执行失败并出现错误:FunctionCallError(HostError(ProhibitedInView(\"predecessor_account_id\")))",
"logs": []
}