Как я могу создать транзакцию в биткойне?
Я не могу создать действительную транзакцию в bitcoinj
, Ошибка, которую я получаю из сети:
mandatory-script-verify-flag-failed (Signature must be zero for failed CHECK(MULTI)SIG operation)
Вот мой код:
package mine;
import java.util.*;
import java.io.*;
import java.nio.charset.*;
import org.bitcoinj.utils.*;
import org.bitcoinj.core.*;
import org.bitcoinj.script.*;
import org.bitcoinj.params.*;
import org.bitcoinj.wallet.*;
import org.bitcoinj.kits.*;
public class Mine
{
static final Charset UTF_8 = Charset.forName("UTF-8");
public static void main(String[] args) throws Exception
{
NetworkParameters params = TestNet3Params.get();
String filePrefix = "challenge-standalone-testnet";
WalletAppKit kit = (new WalletAppKit(params, (new File(".")), filePrefix));
kit.startAsync();
kit.awaitRunning();
Wallet wallet = kit.wallet();
// to get coins: https://testnet.manu.backend.hamburg/faucet
final String faucetReturnAddressString = "2N8hwP1WmJrFF5QWABn38y63uYLhnJYJYTF";
System.out.println("current receive address: " + wallet.currentReceiveAddress());
System.out.println("balance: " + wallet.getBalance().toFriendlyString());
Address faucetReturnAddress = (new Address(params, faucetReturnAddressString));
SendRequest request = SendRequest.to(faucetReturnAddress, params.getMinNonDustOutput());
request.tx.addOutput(params.getMinNonDustOutput(), ScriptBuilder.createOpReturnScript("hello_world".getBytes(UTF_8)));
wallet.completeTx(request);
wallet.commitTx(request.tx);
kit.peerGroup().broadcastTransaction(request.tx).broadcast().get();
System.out.println("current receive address: " + wallet.currentReceiveAddress());
System.out.println("balance: " + wallet.getBalance().toFriendlyString());
}
}
Есть идеи, что не так? (Я пытался вынуть дополнительный Script
вывод, но это не помогло).