2017-10-02 9 views
3

Bitcoin 트랜잭션을 이해하려고합니다. 내가 사용하는 Bitcore Javascript Library.Bitcore로 간단한 1 대 1 Bitcoin 트랜잭션

나는 소스 Wallet1 (Address1/PublicKey1 및 PrivateKey1) - 10 Bitcoins (단순화)가있다.

이제 친구가 내 Wallet2 (Address2/PublicKey2)를 제공하고 Bitcoin 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 : 1) 코드는 다음과 같습니다에 대한 documentation 다음 읽을 때

  1. 인수 무엇입니까 utxos int는 .from(utxos) 함수입니다. 내 Wallet1의 PublicKey1입니까?
  2. .to(address) 함수의 인수 address이 내 친구 Wallet2의 PublicKey2입니까?
  3. change(address) 함수에 대한 인수 address은 새 Wallet3에 속하는 Address3이며, 트랜잭션을 만들기 직전에 작성해야합니다. =>이 말은 내가이 Wallet3의 PrivateKey3를 알아야한다는 것을 의미하며 이것은 나머지 9 Bitcoins를 얻을 Wallet3입니까? =>이 .change(address) 기능을 사용하지 않고 트랜잭션을 수행 할 수 있습니까? 내가 말하면, 9 비트 동전의 나머지 부분을 새 주소로 전송하고 싶지는 않습니까? 원래 Wallet1에 있어야합니다.
  4. .fee(5430)은이 거래에 5430 Satoshi = USD $ 0.2337424950을 쓸 것을 의미합니까?
  5. .sign(privkeySet) 함수의 privkeySet은 원래 Wallet1의 PrivateKey1 함수입니까? 이 .sign() 기능 후에 트랜잭션이 '해고'되고 작업이 완료됩니까?

    지원해 주셔서 감사합니다. 인수 utxos 무엇

답변

0

는 피하여 (utxos) 함수는 int로. 내 Wallet1의 PublicKey1입니까?

지출 할 수있는 아웃 포인트 (즉, 이전 거래의 미사용 출력)입니다.

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

.TO (주소) 함수의 인자 주소는 내 친구 Wallet2의 PublicKey2입니까?

주소는 반드시 대상 공개 키에서만 파생되는 것은 아닙니다. p2sh/p2pkh/p2pk 주소가 생성되는 방법을 읽어야합니다.

하지만 일반적으로 단순한 지출 조건으로 누군가에게 비용을 지불하려는 경우 지불 할 정규 주소는 수신자의 공개 키에서 파생 된 간단히 p2pkh 주소입니다.당신이 주소 생성에 대해 걱정할 필요가 없습니다

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

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

는 일반적으로하지만, 당신의 친구는,에 지불 주소를 제공해야합니다. 위의 예에서는 친구가 공개 키를 제공했다고 가정합니다 (이유가 무엇이든).

변경 (주소) 함수의 인수 주소는 MY Wallet3에 속하는 새로운 Address3이며 트랜잭션을 만들기 직전에 만들어야합니까? =>이 말은 내가이 Wallet3의 PrivateKey3를 알아야한다는 것을 의미하며 이것은 나머지 9 Bitcoins를 얻을 Wallet3입니까? =>이 .change (address) 함수없이 트랜잭션을 수행 할 수 있습니까? 내가 말하면, 9 비트 동전의 나머지 부분을 새 주소로 전송하고 싶지는 않습니까? 원래 Wallet1에 있어야합니다.

귀하가 보내시는 UTXO가 친구에게 보내는 금액 + 수수료와 같지 않은 경우 변경 주소가 필요합니다. 일반적으로 주소 재사용은 일반적으로 나쁜 것으로 간주되므로 변경 주소로 사용할 새 키 쌍 및 주소를 생성하는 것이 좋습니다. 그러나 wallet1에 대한 귀하의 주소 재사용도 가능합니다.

.fee (5430)는이 거래에 5430 Satoshi = USD $ 0.2337424950을 쓸 것을 의미합니까?

예.

.sign (privkeySet) 함수의 privkeySet은 원래 Wallet1의 PrivateKey1 권한입니다. 이 .sign() 함수 다음에 트랜잭션이 실행되고 작업이 완료됩니까?

서명 한 후 트랜잭션을 직렬화해야합니다. 직렬화 후에는 타사 공급자 또는 자신의 Bitcoin 노드를 사용하여 Bitcoin 네트워크에 브로드 캐스팅 할 때 사용할 수있는 16 진수 ASCII 문자열을 가져와야합니다.

bitcoin-cli sendrawtransaction <serialized transaction>