可以使用以下使用bitcoinj master分支的代码生成有效的遗留比特币密钥对:
import org.bitcoinj.core.Address;
import org.bitcoinj.core.DumpedPrivateKey;
import org.bitcoinj.core.ECKey;
import org.bitcoinj.core.NetworkParameters;
public class GeneratePrivateKeyBulk {
public static void main(String[] args) {
ECKey key = new ECKey();
Address pubAddress = new Address(NetworkParameters.prodNet(), key.getPubKeyHash());
DumpedPrivateKey privKey = key.getPrivateKeyEncoded(NetworkParameters.prodNet());
System.out.println("Public address: " + pubAddress.toBase58() + "; Private key: " + privKey.toBase58());
}
}
Run Code Online (Sandbox Code Playgroud)
这就产生编码的公共地址和私有密钥例如像使用传统的base58 1ERzRYYdbibaQt2kuNfgH8spuoqQxYkwQb,L3AuZ2vNt11ac2xSi6AYwzXyftqSVPcSuHNdTsSuRfknXvoRtWzF相应地.
问题是我如何进行相同的操作来获得segwit密钥对?
我查看了bitcoinj文档,但找不到任何直接生成地址的API作为segwit.
通过查看测试和segwit pull请求,我发现下面的代码(附加到上面的代码中)会产生一个segwit地址(3例如,以一个开头的地址31uLnxKteEYa2u1vgWyVPkTpVfUGduCV82)
Script script = ScriptBuilder.createP2SHOutputScript(1, Collections.singletonList(key));
Address segwitAddress = …Run Code Online (Sandbox Code Playgroud) BCH正则表达式最近(在API中)更新为: "address_regex": "^([13][a-km-zA-HJ-NP-Z1-9]{25,34})|^((bitcoincash:)?(q|p)[a-z0-9]{41})|^((BITCOINCASH:)?(Q|P)[A-Z0-9]{41})$"
这是隔离见证的东西吗?
我知道现在是说地址可能以“ bitcoincash:”或“ BITCOINCASH:”开头,但这是一回事,或者它是某个内部Coinbase名称吗?