Kadena
Kadena supports the following signature kinds:
PactCommand, unsigned Pact command.
PactCommand
Signs an unsigned Pact command.
Field
Description
Type - Optional
blockchainKind
Kadena
String
kind
PactCommand
String
command
The Pact command JSON serialized as string.
String
{
"blockchainKind": "Kadena",
"kind": "PactCommand",
"command": "{\"payload\":{\"exec\":{\"code\":\"(coin.transfer \\\"k:120ebd7ecf1550ef08b8fa310607af6364f2fdf76b59ba10a50e0f79ad60c528\\\" \\\"k:f2f3065017402cedeedc821b0579bf2bf916c6c8a1f279741403d694e23510e6\\\" 0.000000000001)\",\"data\":{}}},\"nonce\":\"kjs:nonce:1757410106698\",\"signers\":[{\"pubKey\":\"120ebd7ecf1550ef08b8fa310607af6364f2fdf76b59ba10a50e0f79ad60c528\",\"scheme\":\"ED25519\",\"clist\":[{\"name\":\"coin.GAS\",\"args\":[]},{\"name\":\"coin.TRANSFER\",\"args\":[\"k:120ebd7ecf1550ef08b8fa310607af6364f2fdf76b59ba10a50e0f79ad60c528\",\"k:f2f3065017402cedeedc821b0579bf2bf916c6c8a1f279741403d694e23510e6\",{\"decimal\":\"0.000000000001\"}]}]}],\"meta\":{\"gasLimit\":2500,\"gasPrice\":1e-8,\"sender\":\"k:120ebd7ecf1550ef08b8fa310607af6364f2fdf76b59ba10a50e0f79ad60c528\",\"ttl\":28800,\"creationTime\":1757410106,\"chainId\":\"0\"},\"networkId\":\"mainnet01\"}"
}Typescript Example with kadena.js
import {
Pact,
readKeyset,
} from '@kadena/client'
const walletId = 'wa-6lbfv-9esgj-88s80c0qsih0a393'
const wallet = await dfnsClient.wallets.getWallet({ walletId })
const myAddress = wallet.address
const myPubKey = wallet.address.split(':')[1]
const toAddress = 'k:b7a3c12dc0c8c748ab07525b701122b88bd78f600c76342d27f25e5f92444cde'
const toPubKey = toAddress.split(':')[1]
// 1 KDA
const pactAmount = { decimal: '1.0' }
// coin contract
const contract = 'coin'
const transferCommand = Pact.builder
.execution(
(Pact.modules as any)[contract as 'coin']['transfer-create'](
senderWallet.address, recipient, readKeyset('ks'), pactAmount)
)
.addSigner(myPubKey, (withCapability: any) => [
withCapability('coin.GAS'),
withCapability(`${contract as 'coin'}.TRANSFER`, myAddress, toAddress, pactAmount),
])
// add public key of recipient here
.addKeyset('ks', 'keys-all', toPubKey)
// set the network Id for the transaction. For testnet use 'testnet04', for mainnet use 'mainnet01'
.setNetworkId('testnet04')
// here we set the chainId of the chain we want to broadcast to
.setMeta({ chainId: '0', senderAccount: myAddress })
.createTransaction()
const res = await dfnsClient.wallets.generateSignature({
walletId,
body: {
kind: 'PactCommand',
command: transferCommand.cmd,
},
})Last updated