Used to check for browser translation.
用于检测浏览器翻译。
ブラウザの翻訳を検出する

Upgrade from 1.18.x to 1.19.x


ArcBlock's blockchain, as of v1.19.x, includes native support for Passkeys, allowing them to have corresponding accounts on the blockchain and to sign and send transactions like other accounts.

Because adding native Passkey support has introduced breaking changes to some underlying library APIs, please consult the upgrade guide below if you need to use the latest version.

Updating Project Dependencies#

You can use any familiar tool to update the following project dependencies to their latest versions:

  • @ocap/*
  • @arcblock/*
  • @blocklet/*

Make Code Changes#

@ocap/wallet#

wallet.verify is now an async method

const { fromSecretKey } = require('@ocap/wallet');

const wallet = fromSecretKey(sk, type);
const message = 'data to sign';
const signature = wallet.sign(message);
expect(await wallet.verify(message, signature)).toEqual(true); // changed

Support for new DID types has been added.

const { fromPublicKey } = require('@ocap/wallet');
const { fromBase64 } = require('@ocap/util');

const publicKey = fromBase64('pQECAyYgASFYIA3GyM4rSxM_HyV52QTRwGJOdkXurky3cwTLvb_gKSF-Ilggpd0fhMlPdxHBl45_eJxqywCRl-a4IDpeFa4pcfmrxuM');
const wallet = fromPublicKey(publicKey, 'passkey');
expect(wallet.address).toEqual('z3i165rPumFgyQZpZ1W3VLEYBPuV2xSCAjoqo');

@arcblock/vc#

The following methods are now `async`.

  • Create
  • verify
  • Verify Presentation
const { create, verify, verifyPresentation, createCredentialList, verifyCredentialList } = require('@arcblock/vc');

const issuer = fromRandom();
const owner = fromRandom();
let vc = null;

const subject = {
id: owner.address,
key: 'value',
method: 'SHA3',
};

const issuerInfo = {
wallet: issuer,
name: 'DID.KYC.Email',
};

const vc = await create({
type: 'EmailVerificationCredential',
issuer: issuerInfo,
subject,
tag: 'abcd',
endpoint: 'https://www.arcblock.io/api/vc/status',
});

expect(await verify({ vc, ownerDid: owner.address, trustedIssuers: issuer.address })).toEqual(true);

@arcblock/jwt#

jwt.verify` is now an `async` method

const { sign, verify } = require('@arcblock/jwt');

const token = sign(appId, sk, { key: 'value' });
const [, bodyB64] = token.split('.');
const body = JSON.parse(fromBase64(bodyB64).toString());
const result = await verify(token, pk); // changed

@ocap/asset#

The `preMintFromFactory` method was changed to be `async`.

@blocklet/sdk#

`wallet.verify` is now an `async` method

const getWallet = require('@blocklet/sdk/lib/wallet');

const wallet = getWallet();
const message = 'data to sign';
const signature = wallet.sign(message);
expect(await wallet.verify(message, signature)).toEqual(true); // changed


你获得 0 积分