Skip to content
Merged
Show file tree
Hide file tree
Changes from 9 commits
Commits
Show all changes
28 commits
Select commit Hold shift + click to select a range
c9760d3
feat(graphql): Allow waiting for finalization in client
DaughterOfMars Oct 27, 2025
cd89928
bindings
DaughterOfMars Oct 27, 2025
9d3ba6e
go home
DaughterOfMars Oct 27, 2025
f234a4e
add doc
DaughterOfMars Oct 28, 2025
6842feb
Improve wait fn and execute
DaughterOfMars Oct 28, 2025
770bc44
apply to other execute fn
DaughterOfMars Oct 28, 2025
731500c
Merge branch 'sdk-bindings' into feat/graphql-ex-finalization
DaughterOfMars Oct 28, 2025
9ed2bfb
Merge branch 'sdk-bindings' into feat/graphql-ex-finalization
DaughterOfMars Oct 28, 2025
b843622
clippy
DaughterOfMars Oct 28, 2025
abf5c9d
review
DaughterOfMars Oct 29, 2025
e613a32
Update crates/iota-sdk-graphql-client/src/lib.rs
DaughterOfMars Oct 29, 2025
f50986d
Merge branch 'sdk-bindings' into feat/graphql-ex-finalization
DaughterOfMars Oct 29, 2025
d2e6b30
more bindings updates
DaughterOfMars Oct 29, 2025
14da042
update gas station example
DaughterOfMars Oct 29, 2025
da48452
fix responses and wait for checkpoint inclusion
DaughterOfMars Oct 29, 2025
51d2d5b
Don't return transaction effects
DaughterOfMars Oct 30, 2025
4be54e8
fix balance query and improvements
DaughterOfMars Oct 30, 2025
8a7846a
Update schema and add `is_tx_indexed_on_node`
DaughterOfMars Oct 30, 2025
11b52b9
add WaitForTx
DaughterOfMars Oct 30, 2025
0927922
rename variants
DaughterOfMars Oct 30, 2025
b63e9dd
typo
DaughterOfMars Oct 30, 2025
ba711cb
Update iota binary
DaughterOfMars Oct 30, 2025
aa155a8
fix tests
DaughterOfMars Oct 30, 2025
d395945
fix more tests
DaughterOfMars Oct 30, 2025
beb3480
fix publish example
DaughterOfMars Oct 30, 2025
7f4fa1f
review
DaughterOfMars Oct 30, 2025
a39ad98
Merge branch 'sdk-bindings' into feat/graphql-ex-finalization
DaughterOfMars Oct 30, 2025
0268032
Merge branch 'sdk-bindings' into feat/graphql-ex-finalization
DaughterOfMars Oct 30, 2025
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
2 changes: 1 addition & 1 deletion bindings/go/examples/sign_send_iota/main.go
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ func main() {
}
userSignature := sdk.UserSignatureNewSimple(signature)

effects, err := client.ExecuteTx([]*sdk.UserSignature{userSignature}, txn)
effects, err := client.ExecuteTx([]*sdk.UserSignature{userSignature}, txn, false)
if err.(*sdk.SdkFfiError) != nil {
log.Fatalf("Failed to execute: %v", err)
}
Expand Down
107 changes: 70 additions & 37 deletions bindings/go/iota_sdk_ffi/iota_sdk_ffi.go
Original file line number Diff line number Diff line change
Expand Up @@ -3395,7 +3395,7 @@ func uniffiCheckChecksums() {
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_iota_sdk_ffi_checksum_method_graphqlclient_execute_tx()
})
if checksum != 41079 {
if checksum != 48020 {
// If this happens try cleaning and rebuilding your project
panic("iota_sdk_ffi: uniffi_iota_sdk_ffi_checksum_method_graphqlclient_execute_tx: UniFFI API checksum mismatch")
}
Expand Down Expand Up @@ -3689,6 +3689,15 @@ func uniffiCheckChecksums() {
}
}
{
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_iota_sdk_ffi_checksum_method_graphqlclient_wait_for_tx_finalization()
})
if checksum != 39301 {
// If this happens try cleaning and rebuilding your project
panic("iota_sdk_ffi: uniffi_iota_sdk_ffi_checksum_method_graphqlclient_wait_for_tx_finalization: UniFFI API checksum mismatch")
}
}
{
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_iota_sdk_ffi_checksum_method_identifier_as_str()
})
Expand Down Expand Up @@ -5663,7 +5672,7 @@ func uniffiCheckChecksums() {
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_iota_sdk_ffi_checksum_method_transactionbuilder_execute()
})
if checksum != 27688 {
if checksum != 44127 {
// If this happens try cleaning and rebuilding your project
panic("iota_sdk_ffi: uniffi_iota_sdk_ffi_checksum_method_transactionbuilder_execute: UniFFI API checksum mismatch")
}
Expand All @@ -5672,7 +5681,7 @@ func uniffiCheckChecksums() {
checksum := rustCall(func(_uniffiStatus *C.RustCallStatus) C.uint16_t {
return C.uniffi_iota_sdk_ffi_checksum_method_transactionbuilder_execute_with_sponsor()
})
if checksum != 53109 {
if checksum != 47784 {
// If this happens try cleaning and rebuilding your project
panic("iota_sdk_ffi: uniffi_iota_sdk_ffi_checksum_method_transactionbuilder_execute_with_sponsor: UniFFI API checksum mismatch")
}
Expand Down Expand Up @@ -14397,7 +14406,7 @@ type GraphQlClientInterface interface {
// (optional) event filter.
Events(filter *EventFilter, paginationFilter *PaginationFilter) (EventPage, error)
// Execute a transaction.
ExecuteTx(signatures []*UserSignature, tx *Transaction) (**TransactionEffects, error)
ExecuteTx(signatures []*UserSignature, tx *Transaction, waitForFinalization bool) (*TransactionEffects, error)
// Get the list of gas coins for the specified address.
GasCoins(owner *Address, paginationFilter *PaginationFilter) (CoinPage, error)
// Get the default name pointing to this address, if one exists.
Expand Down Expand Up @@ -14510,6 +14519,7 @@ type GraphQlClientInterface interface {
TransactionsDataEffects(filter *TransactionsFilter, paginationFilter *PaginationFilter) (TransactionDataEffectsPage, error)
// Get a page of transactions' effects based on the provided filters.
TransactionsEffects(filter *TransactionsFilter, paginationFilter *PaginationFilter) (TransactionEffectsPage, error)
WaitForTxFinalization(digest *Digest, timeout *time.Duration) (*TransactionEffects, error)
}
// The GraphQL client for interacting with the IOTA blockchain.
type GraphQlClient struct {
Expand Down Expand Up @@ -15122,31 +15132,29 @@ func (_self *GraphQlClient) Events(filter *EventFilter, paginationFilter *Pagina
}

// Execute a transaction.
func (_self *GraphQlClient) ExecuteTx(signatures []*UserSignature, tx *Transaction) (**TransactionEffects, error) {
func (_self *GraphQlClient) ExecuteTx(signatures []*UserSignature, tx *Transaction, waitForFinalization bool) (*TransactionEffects, error) {
_pointer := _self.ffiObject.incrementPointer("*GraphQlClient")
defer _self.ffiObject.decrementPointer()
res, err :=uniffiRustCallAsync[SdkFfiError](
FfiConverterSdkFfiErrorINSTANCE,
// completeFn
func(handle C.uint64_t, status *C.RustCallStatus) RustBufferI {
res := C.ffi_iota_sdk_ffi_rust_future_complete_rust_buffer(handle, status)
return GoRustBuffer {
inner: res,
}
func(handle C.uint64_t, status *C.RustCallStatus) unsafe.Pointer {
res := C.ffi_iota_sdk_ffi_rust_future_complete_pointer(handle, status)
return res
},
// liftFn
func(ffi RustBufferI) **TransactionEffects {
return FfiConverterOptionalTransactionEffectsINSTANCE.Lift(ffi)
func(ffi unsafe.Pointer) *TransactionEffects {
return FfiConverterTransactionEffectsINSTANCE.Lift(ffi)
},
C.uniffi_iota_sdk_ffi_fn_method_graphqlclient_execute_tx(
_pointer,FfiConverterSequenceUserSignatureINSTANCE.Lower(signatures), FfiConverterTransactionINSTANCE.Lower(tx)),
_pointer,FfiConverterSequenceUserSignatureINSTANCE.Lower(signatures), FfiConverterTransactionINSTANCE.Lower(tx), FfiConverterBoolINSTANCE.Lower(waitForFinalization)),
// pollFn
func (handle C.uint64_t, continuation C.UniffiRustFutureContinuationCallback, data C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_poll_rust_buffer(handle, continuation, data)
C.ffi_iota_sdk_ffi_rust_future_poll_pointer(handle, continuation, data)
},
// freeFn
func (handle C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_free_rust_buffer(handle)
C.ffi_iota_sdk_ffi_rust_future_free_pointer(handle)
},
)

Expand Down Expand Up @@ -16218,6 +16226,35 @@ func (_self *GraphQlClient) TransactionsEffects(filter *TransactionsFilter, pagi

return res, err
}

func (_self *GraphQlClient) WaitForTxFinalization(digest *Digest, timeout *time.Duration) (*TransactionEffects, error) {
_pointer := _self.ffiObject.incrementPointer("*GraphQlClient")
defer _self.ffiObject.decrementPointer()
res, err :=uniffiRustCallAsync[SdkFfiError](
FfiConverterSdkFfiErrorINSTANCE,
// completeFn
func(handle C.uint64_t, status *C.RustCallStatus) unsafe.Pointer {
res := C.ffi_iota_sdk_ffi_rust_future_complete_pointer(handle, status)
return res
},
// liftFn
func(ffi unsafe.Pointer) *TransactionEffects {
return FfiConverterTransactionEffectsINSTANCE.Lift(ffi)
},
C.uniffi_iota_sdk_ffi_fn_method_graphqlclient_wait_for_tx_finalization(
_pointer,FfiConverterDigestINSTANCE.Lower(digest), FfiConverterOptionalDurationINSTANCE.Lower(timeout)),
// pollFn
func (handle C.uint64_t, continuation C.UniffiRustFutureContinuationCallback, data C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_poll_pointer(handle, continuation, data)
},
// freeFn
func (handle C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_free_pointer(handle)
},
)

return res, err
}
func (object *GraphQlClient) Destroy() {
runtime.SetFinalizer(object, nil)
object.ffiObject.destroy()
Expand Down Expand Up @@ -24162,9 +24199,9 @@ type TransactionBuilderInterface interface {
// Dry run the transaction.
DryRun(skipChecks bool) (DryRunResult, error)
// Execute the transaction and optionally wait for finalization.
Execute(keypair *SimpleKeypair, waitForFinalization bool) (**TransactionEffects, error)
Execute(keypair *SimpleKeypair, waitForFinalization bool) (*TransactionEffects, error)
// Execute the transaction and optionally wait for finalization.
ExecuteWithSponsor(keypair *SimpleKeypair, sponsorKeypair *SimpleKeypair, waitForFinalization bool) (**TransactionEffects, error)
ExecuteWithSponsor(keypair *SimpleKeypair, sponsorKeypair *SimpleKeypair, waitForFinalization bool) (*TransactionEffects, error)
// Set the expiration of the transaction to be a specific epoch.
Expiration(epoch uint64) *TransactionBuilder
// Convert this builder into a transaction.
Expand Down Expand Up @@ -24310,63 +24347,59 @@ func (_self *TransactionBuilder) DryRun(skipChecks bool) (DryRunResult, error) {
}

// Execute the transaction and optionally wait for finalization.
func (_self *TransactionBuilder) Execute(keypair *SimpleKeypair, waitForFinalization bool) (**TransactionEffects, error) {
func (_self *TransactionBuilder) Execute(keypair *SimpleKeypair, waitForFinalization bool) (*TransactionEffects, error) {
_pointer := _self.ffiObject.incrementPointer("*TransactionBuilder")
defer _self.ffiObject.decrementPointer()
res, err :=uniffiRustCallAsync[SdkFfiError](
FfiConverterSdkFfiErrorINSTANCE,
// completeFn
func(handle C.uint64_t, status *C.RustCallStatus) RustBufferI {
res := C.ffi_iota_sdk_ffi_rust_future_complete_rust_buffer(handle, status)
return GoRustBuffer {
inner: res,
}
func(handle C.uint64_t, status *C.RustCallStatus) unsafe.Pointer {
res := C.ffi_iota_sdk_ffi_rust_future_complete_pointer(handle, status)
return res
},
// liftFn
func(ffi RustBufferI) **TransactionEffects {
return FfiConverterOptionalTransactionEffectsINSTANCE.Lift(ffi)
func(ffi unsafe.Pointer) *TransactionEffects {
return FfiConverterTransactionEffectsINSTANCE.Lift(ffi)
},
C.uniffi_iota_sdk_ffi_fn_method_transactionbuilder_execute(
_pointer,FfiConverterSimpleKeypairINSTANCE.Lower(keypair), FfiConverterBoolINSTANCE.Lower(waitForFinalization)),
// pollFn
func (handle C.uint64_t, continuation C.UniffiRustFutureContinuationCallback, data C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_poll_rust_buffer(handle, continuation, data)
C.ffi_iota_sdk_ffi_rust_future_poll_pointer(handle, continuation, data)
},
// freeFn
func (handle C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_free_rust_buffer(handle)
C.ffi_iota_sdk_ffi_rust_future_free_pointer(handle)
},
)

return res, err
}

// Execute the transaction and optionally wait for finalization.
func (_self *TransactionBuilder) ExecuteWithSponsor(keypair *SimpleKeypair, sponsorKeypair *SimpleKeypair, waitForFinalization bool) (**TransactionEffects, error) {
func (_self *TransactionBuilder) ExecuteWithSponsor(keypair *SimpleKeypair, sponsorKeypair *SimpleKeypair, waitForFinalization bool) (*TransactionEffects, error) {
_pointer := _self.ffiObject.incrementPointer("*TransactionBuilder")
defer _self.ffiObject.decrementPointer()
res, err :=uniffiRustCallAsync[SdkFfiError](
FfiConverterSdkFfiErrorINSTANCE,
// completeFn
func(handle C.uint64_t, status *C.RustCallStatus) RustBufferI {
res := C.ffi_iota_sdk_ffi_rust_future_complete_rust_buffer(handle, status)
return GoRustBuffer {
inner: res,
}
func(handle C.uint64_t, status *C.RustCallStatus) unsafe.Pointer {
res := C.ffi_iota_sdk_ffi_rust_future_complete_pointer(handle, status)
return res
},
// liftFn
func(ffi RustBufferI) **TransactionEffects {
return FfiConverterOptionalTransactionEffectsINSTANCE.Lift(ffi)
func(ffi unsafe.Pointer) *TransactionEffects {
return FfiConverterTransactionEffectsINSTANCE.Lift(ffi)
},
C.uniffi_iota_sdk_ffi_fn_method_transactionbuilder_execute_with_sponsor(
_pointer,FfiConverterSimpleKeypairINSTANCE.Lower(keypair), FfiConverterSimpleKeypairINSTANCE.Lower(sponsorKeypair), FfiConverterBoolINSTANCE.Lower(waitForFinalization)),
// pollFn
func (handle C.uint64_t, continuation C.UniffiRustFutureContinuationCallback, data C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_poll_rust_buffer(handle, continuation, data)
C.ffi_iota_sdk_ffi_rust_future_poll_pointer(handle, continuation, data)
},
// freeFn
func (handle C.uint64_t) {
C.ffi_iota_sdk_ffi_rust_future_free_rust_buffer(handle)
C.ffi_iota_sdk_ffi_rust_future_free_pointer(handle)
},
)

Expand Down
13 changes: 12 additions & 1 deletion bindings/go/iota_sdk_ffi/iota_sdk_ffi.h
Original file line number Diff line number Diff line change
Expand Up @@ -1732,7 +1732,7 @@ uint64_t uniffi_iota_sdk_ffi_fn_method_graphqlclient_events(void* ptr, RustBuffe
#endif
#ifndef UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_METHOD_GRAPHQLCLIENT_EXECUTE_TX
#define UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_METHOD_GRAPHQLCLIENT_EXECUTE_TX
uint64_t uniffi_iota_sdk_ffi_fn_method_graphqlclient_execute_tx(void* ptr, RustBuffer signatures, void* tx
uint64_t uniffi_iota_sdk_ffi_fn_method_graphqlclient_execute_tx(void* ptr, RustBuffer signatures, void* tx, int8_t wait_for_finalization
);
#endif
#ifndef UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_METHOD_GRAPHQLCLIENT_GAS_COINS
Expand Down Expand Up @@ -1895,6 +1895,11 @@ uint64_t uniffi_iota_sdk_ffi_fn_method_graphqlclient_transactions_data_effects(v
uint64_t uniffi_iota_sdk_ffi_fn_method_graphqlclient_transactions_effects(void* ptr, RustBuffer filter, RustBuffer pagination_filter
);
#endif
#ifndef UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_METHOD_GRAPHQLCLIENT_WAIT_FOR_TX_FINALIZATION
#define UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_METHOD_GRAPHQLCLIENT_WAIT_FOR_TX_FINALIZATION
uint64_t uniffi_iota_sdk_ffi_fn_method_graphqlclient_wait_for_tx_finalization(void* ptr, void* digest, RustBuffer timeout
);
#endif
#ifndef UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_CLONE_IDENTIFIER
#define UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_FN_CLONE_IDENTIFIER
void* uniffi_iota_sdk_ffi_fn_clone_identifier(void* ptr, RustCallStatus *out_status
Expand Down Expand Up @@ -8912,6 +8917,12 @@ uint16_t uniffi_iota_sdk_ffi_checksum_method_graphqlclient_transactions_data_eff
#define UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_CHECKSUM_METHOD_GRAPHQLCLIENT_TRANSACTIONS_EFFECTS
uint16_t uniffi_iota_sdk_ffi_checksum_method_graphqlclient_transactions_effects(void

);
#endif
#ifndef UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_CHECKSUM_METHOD_GRAPHQLCLIENT_WAIT_FOR_TX_FINALIZATION
#define UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_CHECKSUM_METHOD_GRAPHQLCLIENT_WAIT_FOR_TX_FINALIZATION
uint16_t uniffi_iota_sdk_ffi_checksum_method_graphqlclient_wait_for_tx_finalization(void

);
#endif
#ifndef UNIFFI_FFIDEF_UNIFFI_IOTA_SDK_FFI_CHECKSUM_METHOD_IDENTIFIER_AS_STR
Expand Down
Loading