지갑 연계
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 | 프로토콜명(MilkomedaC1 등) 이나 사이드 체인 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
)
트랜잭션 메타데이터는 두 개의 매개변수로 구성됩니다. 프로토콜 매직 & 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 매개변수로 제공됩니다. 다음 코드를 사용하여 패키지에서 가져올 수 있습니다.
- Devnet
- Mainnet
milkomedaNetworks["c1-devnet"].backendEndpoint
기본 URL이 코드에 포함된 경우 다음 엔드포인트 중 하나를 사용할 수 있습니다. - Stargate address (V1/stargate)
milkomedaNetworks["c1-mainnet"].backendEndpoint
결과: https://allowlist-mainnet.flint-wallet.com
월렛을 Milkomeda 메인 넷에 연결하려면 두 개의 엔드포인트를 사용하여 네트워크에서 허용된 EVM 주소를 가져와야 합니다. 이 microservice의 목적은 Milkomeda 브리지를 사용할 수 있는 주소 목록을 제공하는 것입니다.
기본 URL이 코드에 포함된 경우 다음 엔드포인트 중 하나를 사용할 수 있습니다. - Stargate address (/V1/stargate)
- fullAllowedList (/v1/fullAllowedList)
메인넷에서 허용된 EVM 주소의 배열을 반환합니다.
{
"allowList": ["0x...", "0x..."]
}
- isAddress=0x (/v1/isAddressAllowed?address=0x)
제공된 주소가 제한된 메인넷에서 허용되는지 여부를 나타내는 부울 값을 반환합니다.
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"
}
…
]
}