Since rippled 1.1.0
disables public signing by default, we either need to host our own API server or sign Ripple transaction locally. Fortunately, ripple-lib-java
gives clue on how to do this in one of its example.
Long story short, we can use this simple method to do the signing:
import java.math.BigDecimal; import com.ripple.core.types.known.tx.txns.Payment; import com.ripple.core.types.known.tx.signed.SignedTransaction; import com.ripple.core.coretypes.uint.UInt32; import com.ripple.core.coretypes.AccountID; import com.ripple.core.coretypes.Amount; ... /** * Generate signature locally for a payment transaction * @param xrpAmount * @param accountId * @param secret * @param addressTo * @param sequence * @param fee * @return transaction blob */ public String sign(BigDecimal xrpAmount, String accountId, String secret, String addressTo, int sequence, int fee) { Payment payment = new Payment(); payment.as(AccountID.Account, accountId); payment.as(AccountID.Destination, addressTo); payment.as(Amount.Amount, new Amount(xrpAmount).toDropsString()); payment.as(UInt32.Sequence, sequence); payment.as(Amount.Fee, String.valueOf(fee)); SignedTransaction signed = payment.sign(secret); return signed.tx_blob; }
The only catch is we need to provide sequence
and fee
ourselves. Luckily, we can use account_info
API to get the sequence and use default transaction fee 10,000 drops (for testnet) or 10 drops (for main net).
Once we get the transaction blob, we just need to submit it using submit
API. This snippet shows how to do it using a websocket client
:
BigDecimal xrpAmount = new BigDecimal(1); // 1 XRP String addressFrom = "..."; String addressFromSecret = "..."; String addressTo = "..."; // call account_info API and parse sequence from its response body Integer sequence = client.getSequenceFromAccountInfoResponse(body); int fee = 10000; // 10,000 drops String txBlob = client.sign( xrpAmount, addressFrom, addressFromSecret, addressTo, sequence, fee ); // send blob to submit API client.send(client.getSubmitTransactionPayload(txBlob));
Getting verified SSL information with Python (3.x) is very easy. Code examples for it are…
By default, Spring Data Couchbase implements single-bucket configuration. In this default implementation, all POJO (Plain…
Last year, Google released Firebase Auth Emulator as a new component in Firebase Emulator. In…
One of the authentication protocol that is supported by most of Google Cloud services is…
If you need to to add a spatial information querying in your application, PostGIS is…
Amazon Web Service Transcribe provides API to automatically convert an audio speech file (mp3/wav) into…