Sending Cross Currency in Ripple

I have been facing this issue for a while using Ripple JSON RPC, am actually working on a PoC for cross border transaction, as part of my use cases, I need to send transaction in NGN and be received in USD/EUR.

I have read your David Schwartz response here and here but still having issues with the transaction

Here is my request

"method": "submit",
"params": [
"offline": false,
"secret": "sssssssssssssssssssssss",
"tx_json": {
"SendMax" : { "currency" : "USD",
"value" : "200",
"issuer" : "rU3BENzHa5SeB2HnwzovG5wdk7v8ChxXrc"
"Account": "rU3BENzHa5SeB2HnwzovG5wdk7v8ChxXrc",
"value": "100",
"issuer": "rK6qNr9HV62gJPRvKGNen1qHi2LYyHSDvj",
"currency": "NGN"
"Destination": "rK6qNr9HV62gJPRvKGNen1qHi2LYyHSDvj",
"TransactionType": "Payment"
"fee_mult_max": 10000

and I got this as my response

"result": {
"engine_result": "tecPATH_PARTIAL",
"engine_result_code": 101,
"engine_result_message": "Path could not send full amount.",
"status": "success",
"tx_blob": "1200002280000000240000005661D5038D7EA4C680000000000000000000000000004E474E0000000000CD2B28791E0BEB754A75AF8DB99BDEF21DD8D4A968400000000000000A69D5071AFD498D000000000000000000000000000055534400000000007A04D90FD6B8D1400B5CD796391444090AF06C1F7321031810282977B92281325F0AC5DAF4AB7EDB3FBBE5404A38D657E327B1A46B7897744730450221008269F1C23E2C719A73F7F41D484C0577C1EBF496D8BD6009AA975A852C627E7202207FBD5CBA3EF5F5BE7696FAF5C45F2E22BDCEA7FD48BA99D75897BF58C474BD0D81147A04D90FD6B8D1400B5CD796391444090AF06C1F8314CD2B28791E0BEB754A75AF8DB99BDEF21DD8D4A9",
"tx_json": {
"Account": "rU3BENzHa5SeB2HnwzovG5wdk7v8ChxXrc",
"Amount": {
"currency": "NGN",
"issuer": "rK6qNr9HV62gJPRvKGNen1qHi2LYyHSDvj",
"value": "100"
"Destination": "rK6qNr9HV62gJPRvKGNen1qHi2LYyHSDvj",
"Fee": "10",
"Flags": 2147483648,
"SendMax": {
"currency": "USD",
"issuer": "rU3BENzHa5SeB2HnwzovG5wdk7v8ChxXrc",
"value": "200"
"Sequence": 86,
"SigningPubKey": "031810282977B92281325F0AC5DAF4AB7EDB3FBBE5404A38D657E327B1A46B7897",
"TransactionType": "Payment",
"TxnSignature": "30450221008269F1C23E2C719A73F7F41D484C0577C1EBF496D8BD6009AA975A852C627E7202207FBD5CBA3EF5F5BE7696FAF5C45F2E22BDCEA7FD48BA99D75897BF58C474BD0D",
"hash": "A658DE84ABFED32E0E52FBF02E60FBC81E32C5E6186427C33AEBD938188FE4BB"

I understand that tecPATH_PARTIAL means that the transaction failed because the provided paths did not have enough liquidity to send the full amount.

But I did not specify the path bcos I understand it’s best when ripple choose the path.

I will appreciate any help in right direction

How do I restore a wallet from a backup file in MultiBit HD when you have the words and cloud backup?

I have read this: How do I restore a wallet from a backup file in MultiBit HD?

and have the words and mbhdxxxx.aes files in my cloud storage and the wallet password….

but the next button is not enabled when I enter the words:
enter image description here

I have had multibit before the hd client. I have a file like

in the cloud and have found a file like


I have used decrypt_bitcoinj_seed from github and entered my password and got 12 words to restore. The python script did not work with the long and older filename but did work with the short one. But when I have the words and try to recover it says: no datestamp found. When I use the words to continue and select a folder containing the old long file names it does proceed but with errors. I feel that I am getting closer. But I could use some pointers from people who have more experience with multibit hd and recovery.

enter image description here

I did found a folder in a backup on an external hdd which seems to work, but then I got:

enter image description here

I have had 2 wallets now in Multibit. I have selected the old one and waiting an eternity for the sync to finish. I have now my old wallet value as unconfirmed.
How can I fix this? I have read this. but there is no repair… only recover.

enter image description here

Importing a bunch of btc private keys into bitcoin core, then monitoring and sweeping them all to another address?

I’m trying to build a service where I import a bunch of pirvate keys into bitcoin core or some other software if you recommend a better solution. Once the private keys are imported, I want to monitor these addresses and if anything is positive have it send it to another wallet address I own.

I thought aboout importing the private keys with importprivkey api call. Does it take multiple private keys or do I have to loop through them?

Once these private keys are imported into my wallet I want to be able to detect the occurrence of any of the following:

  • if the entire wallet balance is greater than .001
  • or if 1 hour passes

Then, send all coins in the wallet to another address. My questions are:

  • Is there a service to monitor the bitcoin balance, or do I just have to make a cron job to query it every second?
  • When using sendtoaddress api call, do I have to specify a change address?
  • How do other people usually solve this problem?

Building Signed Bitcoin Transaction in Java

I have been attempting to build my own raw transaction generator in Java which I can then broadcast on the testnet network. The problem is when I attempt to broadcast the transaction it says there is an error in the redemption script, which I do not understand.

Here is an example testnet transaction:


The script I am attempting to unlock:


With the redemption script being:


This is the Java code to sign the reverse double sha256 hash:

  public static byte[] sign(byte[] hash, BigInteger priv){

        ECDSASigner signer = new ECDSASigner(new HMacDSAKCalculator(new SHA256Digest()));
        signer.init(true, new ECPrivateKeyParameters(priv, domain));

        BigInteger[] signature = signer.generateSignature(hash);
        ByteArrayOutputStream s = new ByteArrayOutputStream();

        try {
            DERSequenceGenerator seq = new DERSequenceGenerator(s);
            seq.addObject(new ASN1Integer(signature[0]));
            seq.addObject(new ASN1Integer(signature[1]));
            return s.toByteArray();
        catch(IOException e){
            return null;

What is wrong?

How can bitcoins be stolen?

I read about Mt. Gox and how 850,000 bitcoins has been “stolen” from it. I do not understand how someone can steal bitcoins: if MtGox has bitcoins, and MrThief wants to use this bitcoins, then MrThief must show a transaction moving bitcoins from MtGox’s accout to MrThief’s account. But such a tranasaction must be signed by the private key of MtGox. Does it mean that, in order to steal bitcoins, MrThief must somehow find the private key of MtGox and sign transactions in its name? Or is there another way by which bitcoins can be stolen?

Good way to test Electrumx?

Has anyone else gotten an electrumx server up and running lately?

I have just gotten to the point where I’m not seeing any errors during “# service electrumx status”, but I’m also not seeing my server listed in my Electrum client.

Can you think of a good way to test whether the server is working?

I would especially hate it if it did appear but still didn’t work! I don’t want anyone to lose money because of me.

C secp256k1 : what is the purpose of secp256k1_context_randomize?

In the course of studying the secp256k1 library API, I came acrosssecp256k1_context_randomize which seems similar to providing a seed to a pseudo-random generator. At the same time, the file secp256k1.h seemingly does not offer any functionality for generating random private keys, and the function secp256k1_ecdsa_sign relies on a deterministic secret (rfc 6979) rather than anything randomly generated. Now I can see the API being extended in file secp256k1_ecdh.h with the function secp256k1_ecdh which returns an EC Diffie-Hellman secret. But this doesn’t seem to rely on random generation either since the scalar is provided as argument. So I am wondering, why would a user care to randomize a context, or in other words, where is randomization used with the library?