The TrustSDK lets you sign Ethereum transactions and messages so that you can build a native DApp without having to worry about keys or wallets. Follow these instructions to integrate TrustSDK in your native DApp.
Get accounts | Sign transaction | Send transaction |
---|---|---|
- Add jitpack to your root gradle file at the end of repositories:
allprojects {
repositories {
...
maven { url 'https://jitpack.io'}
}
}
- Add dependency to your module:
dependencies {
implementation 'com.github.TrustWallet:TrustSDK-Android:$version'
}
Add deep link intent filter to your AndroidManifest.xml
:
<activity
...
<intent-filter android:autoVerify="true">
...
<action android:name="android.intent.action.VIEW" />
<data android:scheme="app_scheme" android:host="tx_callback" />
<data android:scheme="app_scheme" android:host="accounts_callback" />
Override 'onNewIntent' if your activity is singleTask or 'onCreate' if not, and handle sdk request callback:
override fun onNewIntent(intent: Intent?) {
super.onNewIntent(intent)
val txCallback = Trust.handleOperationResult(intent)
if (txCallback?.error != null) {
resultText.text = txCallback.error?.name
} else if (!txCallback?.data.isNullOrEmpty()) {
onResultData(txCallback?.data)
}
val accounts = (operation as? AccountsOperation)?.parseResultData(txCallback?.data ?: return)
}
To get accounts use this code:
operation = AccountsOperation.Builder()
.callbackScheme("app_scheme") // callback deep link scheme to app initialized request.
.callbackHost("accounts_callback") // (Optional) callback deep link host to app initialized request. 'tx_callback' by default
.coins(Coin.ETHEREUM, Coin.WAVES, Coin.ALGORAND, Coin.ATOM, Coin.BINANCE, Coin.BITCOINCASH) // coins you want to request
.requestId(0) // (Optional) Request id will be returned as callback param. Any incrementing integer. 1 by default
.build()
Trust.execute(this, operation)
You can find more documentation in AccountsOperation
To sign or send a transaction use this code:
val operation = TransferOperation.Builder()
.action(ActionType.SIGN) // ActionType - Send or Sign transaction request
.callbackScheme("app_scheme") // callback deep link scheme to app initialized request.
.callbackHost("tx_callback") // (Optional) callback deep link host to app initialized request. 'tx_callback' by default
.coin(60) // Slip44 index
.tokenId("0x6B175474E89094C44Da98b954EedeAC495271d0F") // token (optional), following standard of unique identifier on the blockhain as smart contract address or asset ID
.from("0xF36f148D6FdEaCD6c765F8f59D4074109E311f0c") // (Optional) "From" address parameter specifies a wallet which contains given account
.to("0x1b38BC1D3a7B2a370425f70CedaCa8119ac24576") // Recipient address
.amount(BigDecimal("1")) // Transaction amount in human-readable (unit) format
.feeLimit(21000L) // (Optional) You can set your custom fee limit in subunit format
.feePrice(BigInteger("100000000000")) // (Optional) You can set your custom fee price in subunit format
.nonce(2) // (Optional) You can set your custom nonce or sequence
.meta("0xa9059cbb0000000000000000000000000F36f148D6FdEaCD6c765F8f59D4074109E311f0c0000000000000000000000000000000000000000000000000000000000000001") // (Optional) Transaction data in hex format, Memo or Destination tag
.requestId(0) // (Optional) Request id will be returned as callback param. Any incrementing integer. 1 by default
.build()
Trust.execute(this, operation)
You can find more documentation in TransferOperation
Trust SDK includes an example project with the above code. To run the example project clone the repo and build the project with Android Studio. Run the app on your emulator or device. Make sure that you have Trust Wallet installed on the device or simulator to test the full callback flow.
License
TrustSDK is available under the MIT license. See the LICENSE file for more info.