Chainlink Functions目前提供了一些字符串,uint 256和int 256的编码函数,但实际上,在需要发送多个参数或信息的场景中,将字节发送到solidity是有意义的,因此您可以将其发送为abi编码.

函数总是需要返回一个缓冲区,所以如果没有使用提供的编码器,您需要创建自己的缓冲区.为了做到这一点,可以使用JS Buffer.from,它在Chainlink Functions Playround中工作得很好,但在实际使用该函数时失败了.

对于我的特定用例,我希望这样做:

return Buffer.from(hexstring, 'hex');

其中,十六进制字符串是我要发送到合同的ABI编码数据.

我得到的错误是:

TypeError:无法读取未定义的属性(正在读取‘from’)

我还try 了使用缓冲区的旧形式,比如

return new Buffer(hexstring, 'hex');

它也可以在操场上工作,但这一次的错误是Buffer不是一个构造函数.

考虑到它似乎根本不被引入,一个 idea 是在函数中只添加require,但不允许使用require,所以这不是可行的方法.

推荐答案

如果您没有使用所提供的编码工具之一,Chainlink函数请求源代码必须返回一个Uint8Array,它表示链上返回的字节.为此,您不需要使用Deno缓冲库,因为Deno本身支持Uint8Arrays而不需要任何导入.

作为一个例子,请try :

const myArr =  new Uint8Array(ARRAY_LENGTH)

Javascript相关问答推荐

用相器进行向内碰撞检测

如何在不分配整个数组的情况下修改包含数组的行为主体?

如何为GrapesJS模板编辑器创建自定义撤销/重复按钮?

从PWA中的内部存储读取文件

fs. writeFile()vs fs.writeFile()vs fs.appendFile()

Promise Chain中的第二个useState不更新

如何解决useState错误—setSelect Image不是函数''

我创建了一个创建对象的函数,我希望从该函数创建的对象具有唯一的键.我怎么能做到这一点?

为什么123[';toString';].long返回1?

查询参数中的JAVASCRIPT/REACT中的括号

在开发期间,Web浏览器如何运行&qot;.jsx&qot;文件?

当我在Reaction中创建一个输入列表时,我的输入行为异常

是否可以在Photoshop CC中zoom 路径项?

如何根据查询结果重新排列日期

有没有办法更改Chart.js 3.x.x中主要刻度的字体?

Clip-Path在网页浏览器(Mozilla、Edge、Chrome)上不能正常工作,但在预览版Visual Code Studio HTML、CSS、JS上却能很好地工作

Reaction即使在重新呈现后也会在方法内部保留局部值

如何阻止外部脚本进入顶层导航

如何调整下拉内容,使其不与其他元素重叠?

正在发出错误的URL请求