Post

CodeMultiversX
CodeMultiversX@CodeMultiversX·
Meet the Tech: The Tx Syntax 🧩 The unified fluent builder for outgoing transactions in a MultiversX Rust contract. EGLD transfer, ESDT, cross-contract call, deploy, read-only query. Same chain, different terminal operation. 💡 🧵
CodeMultiversX tweet media
English
2
32
122
8K
CodeMultiversX
CodeMultiversX@CodeMultiversX·
How it works: self.tx() .to(&recipient) .egld(&amount) .transfer(); Open the builder with self.tx(). Set the receiver with .to(). Attach value with .egld(). Dispatch with .transfer(). Every step is type-checked at compile time. The chain won't build if the pieces don't fit together.
English
1
1
20
336
CodeMultiversX
CodeMultiversX@CodeMultiversX·
The pattern that makes it broadly useful: typed proxies. Add .typed(MyProxy) mid-chain, and you get compile-time argument checking on a call to another contract. self.tx() .to(&counter_contract) .typed(CounterProxy) .get_count() .returns(ReturnsResult) .sync_call(); The proxy is auto-generated from the target contract's ABI. The arguments you pass and the result you receive are typed end-to-end.
English
1
2
17
268
CodeMultiversX
CodeMultiversX@CodeMultiversX·
What to use it for: • Native transfers — self.tx().to(&user).egld(&amt).transfer() • ESDT transfers — .single_esdt() for one token, .payment() for multi-token bundles • Cross-contract calls — sync (same-shard), async with callback (cross-shard), or fire-and-forget transfer_execute • Deploys, upgrades, and queries — same builder, different terminal operation
English
1
1
14
177
CodeMultiversX
CodeMultiversX@CodeMultiversX·
Tips & Tricks 💡 ✦ .typed(MyProxy) gives you compile-time argument checking on cross-contract calls. The proxy is auto-generated by sc-meta all proxy from the target's ABI — never edit it by hand, just regenerate. ✦ .transfer_execute() is fire-and-forget — sends value plus a function call, doesn't await a response. Cheaper than .async_call_and_exit() when you don't need a callback. ✦ .sync_call() works for same-shard targets only. Cross-shard calls are async by protocol — you can't return synchronously across the metachain. Use .async_call_and_exit() with a callback when crossing shards. ✦ .payment(payment_obj) lets the same code path handle EGLD and ESDT transparently. Useful when an endpoint accepts either, or when you're forwarding whatever the caller sent.
English
1
1
13
196
Paylaş