Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions bindings/go/examples/gas_station/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,9 @@ package main

import (
"fmt"
"github.com/iotaledger/iota-rust-sdk/bindings/go/iota_sdk"
"log"

"github.com/iotaledger/iota-rust-sdk/bindings/go/iota_sdk"
)

func identifier(ident string) *iota_sdk.Identifier {
Expand All @@ -23,7 +24,7 @@ func main() {
gasStationAuthToken := "test"
keypair := iota_sdk.Ed25519PrivateKeyGenerate()
sender := keypair.PublicKey().DeriveAddress()
simpleKey := iota_sdk.SimpleKeypairFromEd25519(keypair)
signer := iota_sdk.TransactionSignerFromEd25519(keypair)

builder := iota_sdk.NewTransactionBuilder(sender).WithClient(client)

Expand All @@ -45,7 +46,7 @@ func main() {

builder.GasStationSponsor(gasStationUrl, nil, &headers)

res, err := builder.Execute(simpleKey, nil)
res, err := builder.Execute(signer, nil)
if err.(*iota_sdk.SdkFfiError) != nil {
log.Fatalf("Failed to sponsor transaction: %v", err)
}
Expand Down
56 changes: 56 additions & 0 deletions bindings/go/examples/transaction_signer_callback/main.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
// Copyright (c) 2025 IOTA Stiftung
// SPDX-License-Identifier: Apache-2.0

package main

import (
"log"

"github.com/iotaledger/iota-rust-sdk/bindings/go/iota_sdk"
)

type AsyncSigner struct {
Key *iota_sdk.Ed25519PrivateKey
}

func (signer *AsyncSigner) Sign(transaction *iota_sdk.Transaction) (iota_sdk.TransactionSignerFnOutput, error) {
signature, err := signer.Key.SignTransaction(transaction)
return iota_sdk.TransactionSignerFnOutput{Signature: signature}, err
}

func main() {
recipientAddress, err := iota_sdk.AddressFromHex("0x0000a4984bd495d4346fa208ddff4f5d5e5ad48c21dec631ddebc99809f16900")
if err != nil {
log.Fatalf("Failed to parse recipient address: %v", err)
}

privateKey, err := iota_sdk.NewEd25519PrivateKey(make([]byte, 32))
if err != nil {
log.Fatalf("Failed to create private key: %v", err)
}
publicKey := privateKey.PublicKey()
senderAddress := publicKey.DeriveAddress()
log.Printf("Sender address: %s", senderAddress.ToHex())

// Request funds from faucet
faucet := iota_sdk.FaucetClientNewLocalnet()
_, err = faucet.RequestAndWait(senderAddress)
if err.(*iota_sdk.SdkFfiError) != nil {
log.Fatalf("Failed to request faucet: %v", err)
}

client := iota_sdk.GraphQlClientNewLocalnet()

builder := iota_sdk.NewTransactionBuilder(senderAddress).WithClient(client)
builder.SendIota(recipientAddress, iota_sdk.PtbArgumentU64(1000))

signer := iota_sdk.NewTransactionSigner(&AsyncSigner{Key: privateKey})
waitFor := iota_sdk.WaitForTxFinalized
effects, err := builder.Execute(signer, &waitFor)
if err.(*iota_sdk.SdkFfiError) != nil {
log.Fatalf("Failed to execute: %v", err)
}
log.Printf("Digest: %s", iota_sdk.HexEncode((*effects).Digest().ToBytes()))
log.Printf("Transaction status: %v", (*effects).AsV1().Status)
log.Printf("Effects: %+v", (*effects).AsV1())
}
Loading