トランザクションSDK

トランザクションSDKを使用してブロックチェーンと対話する

概要

DIMO トランザクションSDKは、開発者がトランザクションを簡単に作成できるように設計されたオープンソースのTypeScript SDKです。Transactions SDKの目的は、開発者がエンドユーザーに代わってDIMOのビークルや権限を操作できるようにすることです。

トランザクションSDK

はじめる

トランザクション SDK を使い始めるには、いくつかの用語を理解しておく必要があります。

条項
意味

Batch(バッチ)Operations

バッチとは、複数の操作を1つの関数呼び出しに含める場合に使用されます。 車両権限共有機能では、setVehiclePermissionsBatch異なる権限を持つ複数の車両へのリクエストを1つの操作で送信するために使用します。

Bulk Operations

一括処理とは、同じ種類の複数の操作を1つの関数呼び出しに含める場合に使用されます。 車両権限共有機能では、setVehiclePermissionsBulk同じ権限を持つ異なる車両へのリクエストを1つの操作で送信するために使用します。

Mint(ミント)

Mintとは、ネットワーク上に車両を作成し公開することを意味します。車両をMintすることは、車両がデータフィードに接続したり報酬を獲得したりすることを意味するわけではないことにご注意ください。Mintは、接続して報酬を獲得する前の最初のステップです。

この関数ではmintVehicleWithDeviceDefinition、開発者は提供された車両定義を使用して、ユーザーに代わって車両を作成できます。

Permissions

エンドユーザーが開発者に付与するデータタイプに対するアクセス制御。権限の詳細については、SACDを参照してください。

SACD

権限契約SACDを参照します。

Stampers

SDK では、ユーザーが提供する署名であり、ユーザーが提供するパスキー (顔 ID、指紋など) です。

ERC-4337のアカウント抽象化(AA)モデルで使用されるDIMOグローバルアカウントは、秘密鍵とガス料金への依存を排除​​し、開発者が機能を開始できるようにします。DIMOは、エンドユーザーに代わってトランザクションに署名するためにPasskey Stamperを活用します。

ユーザーは運転席に座り、自分のアカウントを完全に制御できますが、ユーザーがアプリケーションでパスキーを提供すると、開発者はアクションを実行できます

SDKの使用

インストール

npm install @dimo-network/transactions

輸入

import { PasskeyStamper } from "@turnkey/react-native-passkey-stamper";
import { KernelSigner, newKernelConfig, sacdPermissionValue } from '@dimo-network/transactions';

初期化

// Set up the Signer configs
const kernelSignerConfig = newKernelConfig({
  rpcUrl: RPC_URL,
  bundlerUrl: BUNDLER_RPC,
  paymasterUrl: PAYMASTER_RPC,
  environment: 'dev', // omit to default to prod
});

// Initialize a new passkey stamper
const stamper = new PasskeyStamper({
  rpId: RPID,
});

// Initialize a new Signer session based on the Signer configs above
const kernelSigner = new KernelSigner(kernelSignerConfig);

// Pass the passkey received to initialize signer with user account infos	
await kernelSigner.passkeyInit(
  subOrganizationId,
  walletAddress as `0x${string}`,
  stamper,
);

// Optionally, set up the permissions
const permissions = sacdPermissionValue({
  ALLTIME_LOCATION: true,
});

// Optionally, set up the SACD agreement and upload to IPFS
const ipfsRes = await kernelSigner.signAndUploadSACDAgreement({
  driverID: grantee,
  appID: DIMO_APP_ID,
  appName: APP_NAME,
  expiration: expiration,
  permissions: permissions,
  tokenId: tokenId,
  grantee: grantee,
  attachments: [],
  grantor: kernelSigner.smartContractAddress!,
});

if (!ipfsRes.success) {
  throw new Error(
    `Unable to sign and upload SACD agreement: ${ipfsRes.error}`,
  );
}

関数呼び出し

const result = await kernelSigner.setVehiclePermissions({
  tokenId,
  grantee,
  permissions,
  expiration,
  source: `ipfs://${ipfsRes.data?.cid}`,
});

貢献

(寄付基準は今後定義される)

Last updated

Was this helpful?