メインコンテンツへスキップする

ウォレットの連携

web3ウォレットやその他のdAppをMilkomedaと連携させる方法

分散型金融の未来を構築する

以下では、milkomeda-js-sdkパッケージを使ってMilkomeda上でweb3ウォレットを連携させる方法をご説明します。

ウォレットとMilkomedaプロトコルの連携

1. milkomeda-js-sdkパッケージをダウンロードする

milkomeda-js-sdkパッケージにはこちらからアクセスできます。 このパッケージは、Milkomedaデプロイメントの静的設定をホストしています。

情報

これを利用すると、それぞれのプロジェクトでMilkomedaのハードコーディングの静的設定を連携する必要がなくなります。

2. milkomeda-js-sdkパッケージをインストールする

npmを使ってパッケージをインストールする場合:

npm i @dcspark/milkomeda-js-sdk

yarnを使ってパッケージをインストールする場合:

yarn add @dcspark/milkomeda-js-sdk

3. パッケージをプロジェクトにインポートする

importを使用する:

import { generateMilkomedaMetadata, milkomedaNetworks } from "@dcspark/milkomeda-js-sdk";

requireを使用する:

const milkomedaJsSdk = require("@dcspark/milkomeda-js-sdk");

milkomeda-js-sdkパッケージの詳細

Milkomeda-js-sdkは、Milkomedaデプロイメントの静的設定をホストするパッケージです。 これを利用すると、それぞれのプロジェクトでMilkomedaのハードコーディングの静的設定を連携する必要がなくなります。

パラメーター概要
isMainnet特定のネットワークの構成がメインネット(Cardanoなど)かどうかを示すブーリアン
mainchainプロトコルやIDなど、メインチェーンの情報から構成される
sidechainプロトコル名(MilkomedaC1など)やサイドチェーンIDなど、サイドチェーンの情報から構成される
backendEndpointサイドチェーンの特定のバージョンについての追加情報を示す、サービスのURL値を提供する
protocolMagic適切なMilkomedaネットワークと互換性のあるプロトコルマジックを導入する
timeIntervalForAddressMsミリ秒単位で定義された、アドレスを変更する際に必要となる時間の間隔
sidechainContract任意のクライアントが接続できるサイドチェーンコントラクトのアドレス

公開されたペイロードの例

以下は、Milkomedaネットワーク(Devnet)のペイロードを公開した例です。

{
[NETWORK_NAME]: {
isMainnet: false,
name: NETWORK_NAME,
mainchain: {
protocol: ProtocolNames.cardanoProtocol,
id: toChainId({
networkId: registry.Testnet.NetworkId,
networkMagic: registry.Testnet.NetworkMagic
})
},
sidechain: { protocol: ProtocolNames.evmProtocol, id: 200101 },
backendEndpoint: BackendEndpoints.devnet,
protocolMagic: ProtocolMagic.devnet,
timeIntervalForAddressMs: 86400000,
sidechainContract: "0x000000000000000000000000000000000000BbBB"
},
}

さらに、パッケージはMilkomedaのトランザクションに適したメタデータを作成するのに役立つヘルパーの型と関数を利用しています。

# Milkomeda metadata generator
generateMilkomedaMetadata(
address, # address is EVM address
protocolMagic # protocol magic for specific network
)

トランザクションのメタデータは2つのパラメーターで構成されます。 プロトコルマジック&EVMアドレスです。 テストネットトランザクションの一般的なメタデータは以下の通りです。

{
87: "devnet.cardano-evm.c1"
88: "0xEVM_TESTNET_ADDRESS"
}

トランザクションのMilkomedaメタデータを生成した例

generateMilkomedaMetadata("0x000… ", milkomedaNetworks["c1-devnet"].protocolMagic);

「0x000...」をEVMアドレスに置き換えてください :::

Milkomeda REST API

Milkomedaサイドチェーンに関するデータを取得するREST APIについて、Milkomeda-js-sdkパッケージ以外のものを導入しました。

情報

この例では分かりやすくご説明するため、Flintウォレット連携を使っています。

REST APIのベースURLはmilkomeda-js-sdkを使ってbackendEndpointパラメーターとして提供されます。 以下のコードを使って、パッケージから取得することができます。

milkomedaNetworks["c1-devnet"].backendEndpoint

ベースURLがコードに含まれる場合、以下のエンドポイントのいずれかを使用できます。

Milkomeda REST APIスターゲートエンドポイントを使うと、Devnetとメインネットで同じペイロードのプロパティを取得できます。 以下は、Devnetのペイロードの例です。

{
"current_address": "addr_test1wz6lvjg3anml96vl22mls5vae3x2cgaqwy2ewp5gj3fcxdcw652wz",
"ttl_expiry": 1646438400000,
"ada": {
"minLovelace": "3000000",
"fromADAFeeLovelace": "500000",
"toADAFeeGWei": "500000"
},
"assets": [
{
"idCardano": "b4004c2f3edfdd2016d0fead9b927064f345534b000000000000000000000000",
"idMilkomeda": "9c223e1dAf6184672E982d9AA560D9FD1d09A01B",
"minCNTInt": "1",
"minGWei": "1000000000"
}

]
}

この記事やMilkomedaの連携についてご不明な点がありましたら、https://www.milkomeda.com/supportまたはDiscordサーバーよりお気軽にお問い合わせください。