Skip to content

Conversation

@satoshiotomakan
Copy link
Collaborator

@satoshiotomakan satoshiotomakan commented Dec 12, 2024

Description

This PR adds support for native Babylon Staking. That means WalletCore is able to generate and sign BTC Stake/Unstake/Withdraw/Slashing transactions.

Docs:
https://github.com/babylonlabs-io/babylon/blob/a8c9d27ab1d489eb55c23cbb2c75b87e1a85afdb/docs/staking-script.md
https://github.com/babylonchain/babylon/blob/dev/docs/transaction-impl-spec.md

Libs:
Transaction generation: https://github.com/babylonlabs-io/btc-staking-ts/blob/dev/src/staking/transactions.ts
Staking scripts: https://github.com/babylonlabs-io/btc-staking-ts/blob/dev/src/staking/stakingScript.ts

How to test

Run Rust tests

Types of changes

Adds Babylon.proto, corresponding transaction builders.
Also adds support for P2TR multi-sig transactions

Checklist

  • Generate Staking, Unbonding, Slashing scriptPubkeys according to the given Staking parameters
  • Add Staking transaction generation and signing
  • Multi-sig P2TR UTXOs
  • Spend Staking transaction via timelock path
  • Spend Staking transaction via unbonding path
  • Spend Staking transaction via slashing path
  • Spend Unbonding transaction via timelock path
  • Spend Unbonding transaction via slashing path
  • Generate an unsigned transaction bytes on TransactionCompiler.preImageHashes() call
  • Add iOS/Android/WASM unit tests

If you're adding a new blockchain

  • I have read the guidelines for adding a new blockchain.

vcoolish and others added 30 commits October 1, 2024 12:18
* Add deinit for KMP iOS and JVM targets

* Add deinit for JS target

* Add deinit for JS target

* Fix JVM native name

* Reuse one thread on JVM

---------

Co-authored-by: satoshiotomakan <[email protected]>
* Fix kmp issue: memory leak found in Base58.decode in iOS

* Remove unused functions

* Fix failed test cases

* Revert "Fix failed test cases"

This reverts commit 57eee39.

* Revert val -> value argument name refactoring

* Output better indentation

* Revert changes in TWEthereumAbiFunction.h

* Fix inconsistent naming

---------

Co-authored-by: satoshiotomakan <[email protected]>
* feat(ton): Add support for TON 24-words mnemonic in Rust

* feat(ton): Add tw_ton_wallet FFIs

* feat(ton): Add TWTONWallet FFI in C++

* feat(ton): Add tonMnemonic StoredKey type

* feat(ton): Add StoredKey TON tests

* feat(ton): Add TWStoredKey TON tests

* feat(ton): Add TONWallet support in Swift

* TODO add iOS tests

* feat(ton): Add `KeyStore` iOS tests

* feat(ton): Add TONWallet support in JavaScript

* Add `KeyStore` TypeScript tests

* feat(ton): Remove `TonMnemonic` structure, replace with a `validate_mnemonic_words` function

* [CI] Trigger CI

* feat(ton): Fix rustfmt

* feat(ton): Fix C++ build

* feat(ton): Fix C++ build

* feat(ton): Fix C++ build

* feat(ton): Fix C++ address analyzer

* feat(ton): Fix C++ tests

* feat(ton): Add Android tests

* feat(ton): Bump `actions/upload-artifact` to v4

* Bump `dawidd6/action-download-artifact` to v6

* feat(eth): Fix PR comments
* [Chore]: Add GenericPhantomReference.java

* [Chore]: Fix unnecessary null assertion in WalletCoreLibLoader.kt
@satoshiotomakan satoshiotomakan changed the base branch from master to dev December 19, 2024 17:35
@satoshiotomakan satoshiotomakan marked this pull request as ready for review December 19, 2024 17:44
@github-actions
Copy link

github-actions bot commented Dec 19, 2024

Binary size comparison

➡️ aarch64-apple-ios: 12.49 MB

➡️ aarch64-apple-ios-sim: 12.49 MB

➡️ aarch64-linux-android: 16.11 MB

➡️ armv7-linux-androideabi: 13.75 MB

➡️ wasm32-unknown-emscripten: 11.43 MB

@satoshiotomakan satoshiotomakan changed the base branch from dev to master January 3, 2025 14:56
@satoshiotomakan satoshiotomakan merged commit a6e7ac0 into master Jan 3, 2025
14 checks passed
@satoshiotomakan satoshiotomakan deleted the s/babylon-staking branch January 3, 2025 16:15
@trustwallet trustwallet deleted a comment from Tpkilgore197 Jan 6, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants