Web3Kt
0.1.1indexedFacilitates building, signing, and sending Solana blockchain transactions, leveraging ED25519 signing and Base58 encoding. Integrates with Solana RPC for transaction handling.
1
Stars
—
Used by
dependents
—
Health
/ 100
Facilitates building, signing, and sending Solana blockchain transactions, leveraging ED25519 signing and Base58 encoding. Integrates with Solana RPC for transaction handling.
This library has been moved to https://github.com/solana-mobile/web3-core
Multiplatform Web3 Library
// Solana Memo Program
val account = SolanaPublicKey(keyPair.publicKey)
val memoProgramId = SolanaPublicKey.from("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr")
val memoInstruction = TransactionInstruction(
memoProgramId,
listOf(AccountMeta(account, true, true)),
"hello world ".encodeToByteArray()
)
// Build Message
val blockhash = Blockhash(getRecentBlockhash())
val message = Message.Builder()
.addInstruction(memoInstruction)
.setRecentBlockhash(blockhash)
.build()
using Diglol Crypto library for ED25519 signing:
// prepare signer
val keyPair = Ed25519.generateKeyPair()
val signer = object : Ed25519Signer() {
override val publicKey: ByteArray get() = keyPair.publicKey
override suspend fun signPayload(payload: ByteArray): ByteArray = Ed25519.sign(keyPair, payload)
}
// Sign Message
val signature = signer.signPayload(message.serialize())
// Build Transaction
val transaction = Transaction(listOf(signature), message)
Using Base58 encoding from MultiMult and Solana RPC driver from RpcCore
// serialize transaction
val transactionBytes = transaction.serialize()
val encodedTransaction = Base58.encodeToString(transactionBytes)
// setup RPC driver
val rpcUrl =
rpcDriver = Rpc20Driver(rpcUrl, MyNetworkDriver())
(encodedTransaction: String, requestId: String)
: JsonRpc20Request(
method = ,
params = buildJsonArray {
add(encodedTransaction)
},
requestId
)
requestId =
rpcRequest = SendTransactionRequest(encodedTransaction, requestId)
rpcResponse = rpcDriver.makeRequest(rpcRequest, JsonElement.serializer())
Surfaced from shared tags and platforms — no rankings paid for.