问题标签 [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.
assemblyscript - 如何在 AssemblyScript / Near 中打印数组的长度?
我正在附近尝试简单的汇编脚本,似乎找不到打印数组长度的方法。这是最小的复制品:
不编译
虽然toString()
明确存在于 上i32
,例如以下代码段编译并工作:
nearprotocol - 如何从对智能合约的调用中返回一个值?
是否有任何示例可用于从修改链上存储的调用中返回值?
从读取中返回值当然不是问题,但有人提到从调用中获得返回也是可能的。
nearprotocol - 如何在与 Nearlib 的交易中附加价值(存款)?
假设我有一个合约函数,它期望通过某个交易发送一定数量的 near ,该函数被称为create_order
,create_order
带有几个参数。
我在前端的名称下设置了我的合同myContract
。
我想打电话myContract.create_order({...})
,但交易失败,因为这个方法调用没有附加正确数量的 NEAR 令牌。
如何为交易分配一定的存款价值?
nearprotocol - 如何使用 Nearlib.js 获取某个账户的余额
假设我们像这样初始化并且用户已经登录:
我希望能够使用以下方式获得帐户的 NEAR 余额:
或许
nearprotocol - 如何从持久映射中检索值数组?
我创建了一个持久映射并设置了一个键/值对;但是,当我稍后尝试使用 检索值.values
数组时,将返回一个包含 0 个项目的空数组。
我仔细检查了是否包含我正在搜索的键,并且它们是。
这是我的代码:
let members = new PersistentMap<string, Member>('memberss');
members.set(summoner , member2)
let numMembers = members.values(`satosh`, `rico`, -1, true);
我也尝试使用第二个字符串键而不是 null,但仍然返回一个空数组。
我该如何解决这个问题?
smartcontracts - 查看与更改智能合约的方法
当我在智能合约中发现两种类型的功能时,我一直在阅读文档并评估示例:查看和更改方法。
// 视图方法是只读的。它们不会修改状态,但通常会返回一些值。
// change 方法可以修改状态。但是您在调用时不会收到返回值。
来自https://docs.nearprotocol.com/hackathon/hackathon-startup-guide-10-min
这些要求有多严格?如果这些假设不成立(例如,在视图方法中修改状态或在更改方法中未进行任何修改),将会发生什么?
assemblyscript - 在 AssemblyScript 中实例化数组的三种不同方法
我正在编写一个智能合约并希望使用数组来操作数据,但是查看 AssemblyScript 文档,我不确定最好的方法。
对我来说似乎很好,只需使用:
但是当我查阅汇编脚本文档时,推荐了三种创建数组的方法:
我什么时候想使用一种类型的实例化而不是另一种类型的实例化?为什么我不总是使用我一开始介绍的版本?
blockchain - 如何创建具有特定私钥的帐户?
我想给一个特定的私钥一个账户名并注册到 Near 区块链,怎么做?
nearprotocol - 处理来自 nearlib 的账户和交易签名
我有一份合同叫做exchange
. 用户Bob
想要通过放置 的方式花钱near tokens
购买头寸。
有一个名为 的字段,在这种情况下,合约必须证明某个地址归某个地址所有,这一点很重要。markets
Order
Order
owner
order
Bob
当前处理发送到exchange
的事务的流程类似于:
exchange
合约导入一个struct
被调用的Order
.
Order
看起来像:
Exchange
在这种情况下,是实现 mod 的合约order
。Exchange
有place_new_order
一种方法,我希望能够确保这Bob
是发送交易的人:
现在的问题是,以防万一,使用这个 nearlib 代码env::current_account_id()
将始终返回exchange
为current_account_id
. 这是有道理的,因为所有登录所做的只是创建一个access_key
允许exchange
以 的名义做几件事,Bob
但它仍在Exchange
签署交易。
这里的问题是:我如何确保该交易所知道那Bob
是初始化交易的人?
一种可行的方法是有意义的:
Bob
用他的私钥签署每笔交易,我在这里的问题是:如何?
这将导致类似 Metamask 的 UX 问题,在每个 tx 上签名都是错误的 UX。
我建议如下:
Bob
使用一种deposit
方法来存入一定数量的near-tokens
onexchange
并且exchange
只要它可以证明它通过由 签名的“登录访问令牌”来证明它正在这样做Bob
,那么这里的问题再次是:这可能吗?如果是这样怎么办?
nearprotocol - 返回环境帐户 ID 时出错
如果我有以下方法来测试predecessor_account_id
行为
并尝试从前端调用它
我收到以下错误:
未捕获(承诺中)错误:查询调用/通量协议/get_account_id 失败:wasm 执行失败并出现错误:FunctionCallError(HostError(ProhibitedInView("predecessor_account_id")))。
{ "error": "wasm 执行失败并出现错误:FunctionCallError(HostError(ProhibitedInView(\"predecessor_account_id\")))",
"logs": []
}