与Bitcore简单的一对一比特币交易

时间:2017-10-02 15:24:05

标签: javascript bitcoin blockchain bitcore

我尝试了解比特币交易。我使用Bitcore Javascript Library.

我有一个Source Wallet1(Address1 / PublicKey1和PrivateKey1) - 有10个比特币(简化)。

现在一位朋友给了我他的Wallet2(地址2 / PublicKey2),并希望收到1比特币。

当我阅读documentation然后进行简单的事务(1对1)时,代码如下所示:

var transaction = new Transaction()
.from(utxos)          // Feed information about what unspent outputs one can use
.to(address, amount)  // Add an output with the given amount of satoshis
.change(address)      // Sets up a change address where the rest of the funds will go
.fee(5430) // Minimum non-dust amount
.sign(privkeySet)     // Signs all the inputs it can

但我有这些问题:

  1. utxos函数中的参数.from(utxos)是什么。这是我Wallet1的PublicKey1吗?
  2. address函数的参数.to(address)是我朋友Wallet2的PublicKey2?
  3. address函数的参数change(address)是一个新的Address3,它属于MY Wallet3,我必须在进行交易之前创建它? =>这意味着我需要知道这个Wallet3的PrivateKey3,这是Wallet3,我将获得剩余的9个比特币? =>没有这个.change(address)功能可以进行交易吗?如果我说,我不想将剩下的9个比特币转移到新地址?他们应该留在原来的Wallet1?
  4. .fee(5430)表示我将为此次交易花费5430 Satoshi = 0.2337424950美元?
  5. privkeySet函数中的.sign(privkeySet)是我原来的Wallet1中的PrivateKey1吗?在此.sign()功能之后,交易将被解雇'工作完成了?

    非常感谢您的支持。

1 个答案:

答案 0 :(得分:0)

  

.from(utxos)函数的utxos int是什么参数。这是我Wallet1的PublicKey1吗?

这些是您可以花费的外点(即先前交易的未花费的输出)。

https://bitcore.io/api/lib/unspent-output

  

.to(地址)功能的参数地址是我朋友Wallet2的PublicKey2?

地址不一定仅来自目标公钥。您需要了解如何生成p2sh / p2pkh / p2pk地址。

但一般情况下,如果您只想向有简单消费条件的人付费,则付费的规范地址只是一个p2pkh地址,该地址来自收件人的公钥。

https://bitcore.io/api/lib/address

// recipientPublicKey should be provided
var address = new Address(recipientPublicKey);
// alternative interface
var address = Address.fromPublicKey(recipientPublicKey);

通常,您的朋友应该只为您提供付费地址,因此您不必担心地址生成。上面的示例假设您的朋友已经为您提供了他们的公钥(无论出于何种原因)。

  

更改(地址)功能的参数地址是一个新的Address3,它属于MY Wallet3,我必须在进行交易之前创建它? =>这意味着我需要知道这个Wallet3的PrivateKey3,这是Wallet3,我将获得剩余的9个比特币? =>是否可以在没有此.change(地址)功能的情况下进行交易?如果我说,我不想将剩下的9个比特币转移到新地址?他们应该留在原来的Wallet1?

您需要更改地址,除非您支出的UTXO等于您向朋友发送的金额+费用。通常,优良作法是生成新的密钥对和地址以用作更改地址,因为地址重用通常被认为是错误的。但是,重复使用wallet1的地址也是可以的。

  

.fee(5430)意味着我将花费5430 Satoshi = USD $ 0.2337424950进行此次交易?

  

.sign(privkeySet)函数中的privkeySet是我原来的Wallet1中的PrivateKey1吗?在此.sign()函数之后,交易将被解雇'工作完成了吗?

签名后,您需要序列化您的交易。 序列化后,您应该获得一个十六进制ASCII字符串,您可以使用第三方提供商或您自己的比特币节点将其广播到比特币网络。

bitcoin-cli sendrawtransaction <serialized transaction>