トランザクションSDK
トランザクションSDKを使用してブロックチェーンと対話する
DIMOチェックイン
Transactions SDK is being utilized by Login with DIMO alongside Accounts API. If you are looking to build apps, we highly recommend using the Login with DIMO component instead and streamline that with the Data SDK.
概要
DIMO トランザクションSDKは、開発者がトランザクションを簡単に作成できるように設計されたオープンソースのTypeScript SDKです。Transactions SDKの目的は、開発者がエンドユーザーに代わってDIMOのビークルや権限を操作できるようにすることです。
はじめる
トランザクション 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?