0

试图在 AS 中创建一个 uniqueId。我添加了这个包 npm install as-nanoid --save

安装中的 nanoid 函数如下:

let urlAlphabet = ['M','o','d','u','l','e','S','y','m','b','h','a','s','O','w','n','P','r','-','0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F','G','H','N','R','V','f','g','c','t','i','U','v','z','_','K','q','Y','T','J','k','L','x','p','Z','X','I','j','Q','W']

export function nanoid(length: number = 21): string {
  let id = ''
  for (let i = 0; i < length; i++) {
    id += urlAlphabet[i32(Math.floor(Math.random() * 64))]
  }
  return id
}

在我的汇编index.ts文件中,我有以下内容:

import { nanoid } from 'as-nanoid'

@nearBindgen
class MyClass {
  public id: string
  constructor() {
    this.id = nanoid(8)
  }
}

使用NEAR-SDK-AS 当我在部署合约后初始化合约时。 near call $CONTRACT init --accountId $CONTRACT

我收到以下错误:

Error: {"index":0,"kind":{"ExecutionError":"Link Error: Error while importing \"env\".\"seed\": unknown import. Expected Function(FunctionType { params: [], results: [F64] })"}}

此处的任何帮助将不胜感激,或者如果有更简单的创建 uniqueId 的方法,请分享。

4

1 回答 1

1
function generateRandomDna(): string {
  let buf = math.randomBuffer(DNA_DIGITS);
  let b64 = base64.encode(buf);
  return b64;
}

像这样的东西,来自文档,如有必要,使用可用的数学进行变体。

目前,我在合约中所做的是将账户名和区块高度放在一起:

const title = context.sender.substring(0, context.sender.lastIndexOf('.'))
this.id = title + '-' + context.blockIndex.toString()
于 2021-10-23T22:11:03.457 回答