• Trang chủ
  • Blockchain
  • Xây dựng ứng dụng của Blockchain – w3seo cách tương tác blockchain
336 lượt xem

Xây dựng ứng dụng của Blockchain – w3seo cách tương tác blockchain


Rate this post

Ứng dụng phi tập trung

Sự phổ cập của công nghệ tiên tiến blockchain hầu hết được thôi thúc bởi thực tiễn là nó hoàn toàn có thể xử lý những yếu tố khác nhau trong quốc tế thực vì nó cung ứng minh bạch và bảo mật thông tin hơn ( chống trá hình ) so với thường thì công nghệ tiên tiến. Có rất nhiều trường hợp sử dụng blockchain được xác lập bởi một số ít những công ty khởi nghiệp và những thành viên hội đồng nhằm mục đích xử lý những yếu tố này Để tiến hành những trường hợp sử dụng này, chúng tôi tạo những ứng dụng hoạt động giải trí trên của những blockchains. Nói chung, những ứng dụng tương tác với blockchain được gọi là “ ứng dụng phi tập trung chuyên sâu ” hoặc nói ngắn gọn là chỉ DApps hoặc dApps .

Các bài viết liên quan:

Để hiểu rõ hơn về DApp, thứ nhất tất cả chúng ta hãy xem lại blockchain là gì .
Blockchain hoặc sổ cái phân tán về cơ bản là một loại cơ sở tài liệu đặc biệt quan trọng nơi tài liệu không được tàng trữ tại một sever tập trung chuyên sâu, nhưng nó được sao chép toàn bộ những nút tham gia trong mạng. Ngoài ra, tài liệu trên blockchains là được ký bằng mật mã, chứng tỏ danh tính của thực thể đã viết tài liệu đó trên blockchain .
Xây dựng ứng dụng của Blockchain
Để sử dụng cơ sở tài liệu này để tàng trữ và truy xuất tài liệu, chúng tôi tạo những ứng dụng được gọi là DApps vì những những ứng dụng không dựa trên cơ sở tài liệu tập trung chuyên sâu mà dựa trên blockchain – dựa trên kho tài liệu phi tập trung chuyên sâu. Không có điểm thất bại hoặc trấn áp duy nhất cho những ứng dụng này. Hãy lấy một ví dụ về DApp. Hãy xem một ngữ cảnh về chuỗi đáp ứng nơi 1 số ít nhà cung ứng và đối tác chiến lược phục vụ hầu cần tham gia vào việc phân phối quy trình tiến độ dây chuyền sản xuất sản xuất sản phẩm & hàng hóa. Để sử dụng công nghệ tiên tiến blockchain cho trường hợp sử dụng chuỗi đáp ứng này, đây là những gì chúng tôi sẽ làm :
Chúng ta sẽ cần thiết lập những nút blockchain tại mỗi của những nhà phân phối này để họ hoàn toàn có thể tham gia vào quy trình tiến độ đồng thuận về tài liệu được san sẻ .
Chúng tacần một giao diện để toàn bộ những người tham gia và người dùng hoàn toàn có thể tàng trữ, truy xuất, xác định và nhìn nhận tài liệu trên blockchain. Giao diện này sẽ được sử dụng bởi nhà phân phối để nhập thông tin về sản phẩm & hàng hóa được sản xuất ; bởi đối tác chiến lược phục vụ hầu cần để nhập thông tin về việc chuyển sản phẩm & hàng hóa ; bằng nhà phân phối kho bãi để xác định xem sản phẩm & hàng hóa được sản xuất và sản phẩm & hàng hóa được chuyển đồng nhất, v.v., v.v. Điều này giao diện sẽ là DApp chuỗi đáp ứng của tất cả chúng ta .
Một ví dụ khác về DApp sẽ là một mạng lưới hệ thống bỏ phiếu dựa trên những blockchains. Sử dụng blockchain để bỏ phiếu, chúng tôi sẽ hoàn toàn có thể hàng loạt quy trình minh bạch và bảo đảm an toàn hơn nhiều vì mỗi phiếu bầu sẽ được ký bằng mật mã. Chúng tôi sẽ cần tạo một ứng dụng hoàn toàn có thể nhận được list những ứng viên mà cử tri hoàn toàn có thể bỏ phiếu, và ứng dụng này cũng sẽ cung ứng một giao diện đơn thuần để gửi và ghi lại những phiếu bầu .

Phát triển ứng dụng Blockchain

Trước khi chuyển sang viết mã, thứ nhất tất cả chúng ta hãy hiểu một số ít khái niệm cơ bản xung quanh việc tăng trưởng ứng dụng blockchain. Nói chung, chúng tôi được sử dụng đến những khái niệm như đối tượng người tiêu dùng, lớp, hàm, v.v. khi chúng tôi tăng trưởng ứng dụng ứng dụng thường thì. Tuy nhiên, khi nói đến blockchain ứng dụng, tất cả chúng ta cần hiểu thêm một vài khái niệm như thanh toán giao dịch, thông tin tài khoản và địa chỉ, mã thông tin và ví, nguồn vào và đầu ra và số dư. Cơ chế bắt tay và nhu yếu / phản hồi giữa một ứng dụng phi tập trung chuyên sâu và một chuỗi khối được thôi thúc bởi những khái niệm này .
Đầu tiên, khi tăng trưởng một ứng dụng dựa trên blockchain, chúng tôi cần xác lập cách tài liệu ứng dụng sẽ ánh xạ tới blockchain quy mô tài liệu. Ví dụ : khi tăng trưởng DApp trên Ethereum blockchain, tất cả chúng ta cần hiểu trạng thái ứng dụng hoàn toàn có thể như thế nào được trình diễn về cấu trúc tài liệu Solidity và cách ứng dụng hành vi hoàn toàn có thể được biểu lộ trong những pháp luật của hợp đồng mưu trí Ethereum .
Như tất cả chúng ta biết rằng tổng thể tài liệu trên blockchain đều được ký bằng mật mã bởi riêng tư khóa của người dùng, chúng tôi cần xác lập thực thể nào trong ứng dụng của chúng tôi sẽ có danh tính hoặc địa chỉ được đại diện thay mặt trên blockchain. Trong những ứng dụng thường thì, điều này thường không đúng như vậy, do tại tài liệu không phải khi nào cũng được ký. Đối với ứng dụng blockchain, tất cả chúng ta cần xác lập ai sẽ là người ký và họ sẽ ký vào tài liệu nào. Ví dụ, trong DApp bỏ phiếu trong đó mọi cử tri ký tên vào phiếu bầu của họ bằng mật mã, điều này rất dễ xác lập .
Tuy nhiên, hãy tưởng tượng một ngữ cảnh mà tất cả chúng ta cần vận động và di chuyển một ứng dụng mạng lưới hệ thống phân tán thường thì hiện có, có tài liệu của nó được tàng trữ trên nhiều bảng và cơ sở tài liệu SQL, dựa trên DApp trên chuỗi khối Ethereum .
Xem thêm Mã hóa mật mã : những khái niệm cơ bản
Trong trường hợp này, chúng tôi cần xác lập những thực thể nào trong bảng nào sẽ có danh tính của họ và thực thể nào sẽ là gắn liền với những danh tính khác. Trong vài phần tiếp theo, tất cả chúng ta sẽ mày mò Bitcoin và Ethereum lập trình ứng dụng bằng cách sử dụng những đoạn mã đơn thuần để gửi một số ít những thanh toán giao dịch. Mục đích của bài tập này là làm quen với API blockchain và những chiêu thức lập trình phổ cập .
Vì đơn thuần, chúng tôi sẽ sử dụng những mạng thử nghiệm công khai minh bạch cho những blockchains này và chúng tôi sẽ viết mã bằng JavaScript. Lý do chọn JavaScript là, tại thời gian này viết, chúng tôi có những thư viện JavaScript không thay đổi có sẵn cho cả hai blockchains và sẽ thuận tiện hơn khi hiểu những điểm giống và khác nhau trong giải pháp tiếp cận chúng tôi thực thi trong khi viết mã. Các đoạn mã được lý giải chi tiết cụ thể sau mỗi bước hài hòa và hợp lý và hoàn toàn có thể hiểu được ngay cả khi người đọc không quen với lập trình JavaScript .

Tương tác với chuỗi khối Bitcoin

Trong phần này, chúng tôi sẽ gửi một thanh toán giao dịch đến mạng thử nghiệm công khai minh bạch Bitcoin từ địa chỉ này đến địa chỉ khác. Hãy coi đây là một ứng dụng “ Hello World ” cho chuỗi khối Bitcoin .
Như đã đề cập trước đây, chúng tôi sẽ sử dụng thư viện JavaScript bitcoinjs để chuẩn bị sẵn sàng và ký kết những thanh toán giao dịch. Và để đơn thuần, thay vì tàng trữ một nút Bitcoin cục bộ, chúng tôi sẽ sử dụng Nút mạng thử nghiệm Bitcoin được tàng trữ bởi trình mày mò khối của nhà sản xuất bên thứ ba .
Lưu ý rằng bạn hoàn toàn có thể sử dụng bất kể nhà phân phối nào cho ứng dụng của mình và bạn cũng hoàn toàn có thể tàng trữ một nút cục bộ. Tất cả những gì bạn cần làm là trỏ mã ứng dụng của mình tới liên kết với nút ưa thích của bạn. Nhớ lại những chương trước rằng blockchain Bitcoin hầu hết là để cho phép thanh toán giao dịch ngang hàng. Một thanh toán giao dịch Bitcoin đa phần chỉ là chuyển Bitcoin từ địa chỉ này sang địa chỉ khác. Đây là cách chúng tôi làm điều này theo chương trình. Sau đây ( Hình 5-2 ) cho thấy cách mã này tương tác với Chuỗi khối bitcoin .

Lưu ý: Hình vẽ chỉ là bản phác thảo thô và không hiển thị chi tiết kiến ​​trúc dịch vụ Block Explorer.

Xây dựng ứng dụng của Blockchain

Hình 5-2. Ứng dụng tương tác với chuỗi khối Bitcoin bằng cách sử dụng API Block Explorer

Xem thêm Cấu trúc Blockchain của bitcoin ( Mở trong cửa số mới )

Thiết lập và khởi tạo thư viên bitcoinjs trong một ứng dụng nodejs

Trước khi chúng tôi gọi mã dành riêng cho thư viện cho những thanh toán giao dịch Bitcoin, chúng tôi sẽ setup và khởi tạo thư viện bitcoinjs. Sau khi khởi tạo ứng dụng node.js bằng lệnh npm init, hãy tạo một điểm vào cho ứng dụng, index.js và tùy chỉnh của chúng tôi Mô-đun hoạt Javascript để gọi bitcoinjs công dụng thư viện btc.js. Nhập btc.js trong index.js. Bây giờ, chúng tôi đã chuẩn bị sẵn sàng để làm theo những bước tiếp theo. Đầu tiên, hãy setup mô-đun node cho bitcoinjs :

npm install --save bitcoinjs-lib

Sau đó, trong mô-đun Bitcoin btc.js của chúng tôi, chúng tôi sẽ khởi tạo bitcoinjs thư viện sử dụng từ khóa request :

var btc = require('bitcoinjs-lib');

Bây giờ tất cả chúng ta hoàn toàn có thể sử dụng biến btc này để gọi những hàm thư viện trên thư viện bitcoinjs. Ngoài ra, là một phần của quy trình khởi tạo, chúng tôi khởi tạo một vài biến khác :
The network to target : Chúng tôi đang sử dụng thử nghiệm Bitcoin mạng .

var network = btc.networks.testnet;

Điểm cuối API nút công khai minh bạch để lấy và đăng thanh toán giao dịch : Chúng tôi đang sử dụng API Block Explorer cho Mạng thử nghiệm bitcoin. Lưu ý rằng bạn hoàn toàn có thể sửa chữa thay thế API này điểm cuối với điểm cuối ưa thích của bạn .

var blockExplorerTestnetApiEndpoint = 'https://testnet.blockexplorer.com/api/';

Tại thời gian này, toàn bộ tất cả chúng ta đều được thiết lập để tạo một thanh toán giao dịch Bitcoin bằng cách sử dụng ứng dụng node.js .

Tạo keypairs cho người nhận và người gửi

Điều tiên phong mà tất cả chúng ta cần là cặp chìa khóa cho người gửi và máy thu. Chúng giống như thông tin tài khoản người dùng xác lập người dùng trên chuỗi khối. Vì vậy, thứ nhất tất cả chúng ta hãy tạo hai keypairs cho Alice và Bob .

var getKeys = function () {
var	aliceKeys = btc.ECPair.makeRandom({ network: network});
var	bobKeys = btc.ECPair.makeRandom({ network: network});
var alicePublic = aliceKeys.getAddress(); var alicePrivate = aliceKeys.toWIF(); var bobPublic = bobKeys.getAddress(); var bobPrivate = bobKeys.toWIF(); console.log(alicePublic, alicePrivate, bobPublic, bobPrivate);
};

Những gì chúng tôi đã làm trong đoạn mã trước là, chúng tôi đã sử dụng lớp ECPair của thư viện bitcoinjs và được gọi là phương pháp makeRandom trên đó để tạo cặp khóa ngẫu nhiên cho mạng thử nghiệm ; chú ý quan tâm tham số được truyền cho dạng liên kết .
Bây giờ chúng tôi đã tạo một vài cặp khóa, hãy sử dụng chúng để gửi Bitcoin từ cái này sang cái khác. Trong hầu hết những ví dụ về mật mã, Alice và Bob là những nhân vật được yêu quý, như đã thấy ở phần trước biến keypair .

Tuy nhiên, mỗi khi chúng ta thấy một ví dụ về mật mã, nói chung Alice là người mã hóa / ký tên gì đó và gửi cho Bob Vì lý do đó, chúng tôi cảm thấy Bob đang phải gánh rất nhiều nợ từ Alice, vì vậy trong trường hợp của chúng tôi chúng tôi sẽ giúp Bob trả một số khoản nợ đó. Chúng tôi sẽ làm ví dụ này Bitcoin giao dịch từ Bob đến Alice.

Nhận bitcoin thử nghiệm trong ví người gửi

Chúng tôi đã xác lập rằng Bob sẽ đóng vai trò là người gửi trong ví dụ thanh toán giao dịch Bitcoin. Trước khi gửi bất kể Bitcoin nào cho Alice, anh ấy cần chiếm hữu chúng. Như tất cả chúng ta biết rằng thanh toán giao dịch mẫu này đang nhắm tiềm năng mạng thử nghiệm Bitcoin, không có tiền thật tham gia nhưng chúng tôi vẫn cần một số ít Bitcoin thử nghiệm trong ví của Bob .
Một cách đơn thuần để nhận Bitcoin mạng thử nghiệm là hỏi trên Internet. Có rất nhiều website trên Internet tàng trữ một biểu mẫu web đơn thuần để lấy địa chỉ testnet Bitcoin và sau đó gửi Bitcoin ròng thử nghiệm cho những người đó. Các dịch vụ này được gọi là Bitcoin testnet và nếu bạn tìm kiếm trực tuyến cụm từ đó, bạn sẽ nhận được rất nhiều trong số đó tác dụng tìm kiếm .
Chúng tôi không liệt kê hoặc đề xuất kiến nghị bất kể testnet đơn cử nào vòi vì chúng thường không vĩnh viễn. Ngay khi có vòi nhà sản xuất dịch vụ đã sử dụng hết số tiền thử nghiệm của họ hoặc họ không muốn tàng trữ dịch vụ nữa, họ đóng cửa. Nhưng sau đó những cái mới liên tục Open mọi lúc. Danh sách 1 số ít dịch vụ vòi này cũng có sẵn trên Trang testnet wiki bitcoin .
Một cách khác để nhận Bitcoin ròng thử nghiệm là tàng trữ một nút Bitcoin cục bộ chỉ vào mạng thử nghiệm và khai thác 1 số ít. Khai thác khối trên Bitcoin mạng kiểm tra không khó như trên mạng chính. Cách tiếp cận này cũng hoàn toàn có thể là cách tiếp cận Lever tiếp theo khi bạn đang xây dựng một mẫu sản phẩm Ứng dụng Bitcoin và bạn cần phải kiểm tra nó tiếp tục. Thay vì nhu yếu thử nghiệm đồng xu tiền mỗi khi bạn muốn kiểm tra ứng dụng của mình, bạn hoàn toàn có thể khai thác chính họ .
Đối với mục tiêu của ví dụ đơn thuần này, chúng tôi sẽ chỉ nhận được 1 số ít Bitcoin từ testnet. Trong đoạn mã trước đó, giá trị trong biến bobPublic là địa chỉ testnet Bitcoin của Bob. Khi chúng tôi chạy cái này đoạn mã, nó đã tạo
“ msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2 ” là của Bob Địa chỉ .
Nó cũng là khóa công khai minh bạch được mã hóa cơ sở 58 của Bob. Chúng tôi sẽ gửi cái này giá trị trong một trong những biểu mẫu web vòi testnet và đổi lại, chúng tôi sẽ nhận được ID thanh toán giao dịch. Nếu chúng tôi tra cứu ID thanh toán giao dịch đó trên bất kỳ Bitcoin nào người tò mò testnet, chúng tôi sẽ thấy rằng 1 số ít địa chỉ khác đã gửi 1 số ít thử nghiệm Bitcoin đến địa chỉ của Bob mà chúng tôi đã gửi trong biểu mẫu .

Nhận đầu ra chưa chi tiêu của người gửi

Bây giờ chúng tôi biết rằng chúng tôi có 1 số ít Bitcoin thử nghiệm trong ví của Bob, chúng tôi hoàn toàn có thể tiêu tốn chúng và đưa chúng cho Alice trải qua thanh toán giao dịch Bitcoin. Hãy nhớ lại từ những bài viết trước cách những thanh toán giao dịch Bitcoin được tạo ra từ những nguồn vào và tác dụng đầu ra .
Bạn hoàn toàn có thể sử dụng những đầu ra chưa sử dụng của mình bằng cách thêm chúng làm đầu vào cho những thanh toán giao dịch mà bạn muốn tiêu tốn chúng. Để làm được điều đó, thứ nhất bạn cần truy vấn mạng về tác dụng đầu ra chưa được gửi của người gửi. Đây là cách chúng tôi sẽ làm điều đó cho địa chỉ testnet Bitcoin của Bob bằng cách sử dụng trình tò mò khối API. Để nhận những đầu ra chưa sử dụng, chúng tôi sẽ gửi một nhu yếu HTTP đến UTXO điểm cuối có địa chỉ của Bob “ msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2 ” .

var getOutputs = function () {
var url = blockExplorerTestnetApiEndpoint + 'addr/' + msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2 + '/utxo'; return new Promise(function (resolve, reject) {
request.get(url, function (err, res, body) { if (err) {
reject(err);
}
resolve(body);
});
});
 };

Trong đoạn mã trước, chúng tôi đã sử dụng nhu yếu node.js để gửi những nhu yếu http bằng ứng dụng node.js. Hãy tự do sử dụng thư viện / mô-đun http yêu dấu của bạn. Đoạn mã này là một hàm JavaScript trả về một lời hứa sẽ phân giải thành cơ quan phản hồi từ API giải pháp. Đây là cách phản hồi trông như thế nào :

[
{
address: 'msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2',
txid: 'db2e5966c5139c6e937203d567403867643482bbd9a6624
752bbc583ca259958',
vout: 0,
scriptPubKey: '76a914806094191cbd4fcd8b4169a70588ad
c51dc02d6888ac',
amount: 0.99992,
satoshis: 99992000,
height: 1258815,
confirmations: 1011
},
{

address: 'msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2', txid: '5b88d5fc4675bb86b0a3a7fc5a36df9c425c3880a7 453e3afeb4934e6d1d928e',
vout: 1,
scriptPubKey: '76a914806094191cbd4fcd8b4169a70588ad
c51dc02d6888ac',
amount: 0.99998,
satoshis: 99998000,
height: 1258814,
confirmations: 1012
}

]

Nội dung phản hồi được trả về bởi cuộc gọi là một mảng JSON có hai những đối tượng người tiêu dùng. Mỗi đối tượng người tiêu dùng này đại diện thay mặt cho một đầu ra chưa được sử dụng cho Bob. Mỗi đầu ra có txid, là ID thanh toán giao dịch nơi đầu ra này được liệt kê, số lượng tương quan đến đầu ra và vout, có nghĩa là trình tự hoặc số chỉ mục của đầu ra trong thanh toán giao dịch đó. Có một số ít khác thông tin trong những đối tượng người tiêu dùng JSON cũng vậy, nhưng thông tin đó sẽ không được sử dụng trong quá trình chuẩn bị sẵn sàng thanh toán giao dịch .
Nếu tất cả chúng ta lấy đối tượng người tiêu dùng tiên phong trong mảng, về cơ bản nó nói rằng Địa chỉ bitcoin testnet “ msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2 ” có ` 99992000 ` satoshi chưa sử dụng đến từ thanh toán giao dịch
` db2e5966c5139c6e937203d567403867643482bbd9a6624752bbc583ca259958 ` tại chỉ mục ` 0 ` .
Tương tự, đối tượng người tiêu dùng thứ hai đại diện thay mặt cho ` 99998000 ` satoshi chưa sử dụng đến từ thanh toán giao dịch
` 5 b88d5fc4675bb86b0a3a7fc5a36df9c425c3880a7453e3afeb4934e6d1d928e ` tại chỉ mục ` 1 `. Đừng quên rằng “ msDkUzzd69idLLGCkDFDjVRz44jHcV3pW2 ” là của Bob Bitcoin testnet, chúng tôi đã tạo ở bước 2 trước đó. Bây giờ chúng tôi biết rằng Bob có nhiều satoshi này, mà anh ta hoàn toàn có thể tiêu tốn trong một thanh toán giao dịch mới .

Chuẩn bị giao dịch Bitcoin

Bước tiếp theo là sẵn sàng chuẩn bị một thanh toán giao dịch Bitcoin trong đó Bob hoàn toàn có thể gửi thử nghiệm tiền xu cho Alice. Chuẩn bị thanh toán giao dịch về cơ bản là xác lập nguồn vào của nó, đầu ra và số lượng .
Như tất cả chúng ta đã biết từ bước trước rằng Bob có hai đầu ra chưa được sử dụng dưới địa chỉ testnet Bitcoin của anh ấy, tất cả chúng ta hãy dành thành phần tiên phong của đầu ra mảng. Hãy thêm điều này làm đầu vào cho thanh toán giao dịch của tất cả chúng ta

var utxo = JSON.parse(body.toString());
var transaction = new btc.TransactionBuilder(network); transaction.addInput(utxo[0].txid, utxo[0].vout);

Trong đoạn mã preceding, thứ nhất, chúng tôi đã nghiên cứu và phân tích cú pháp phản hồi mà chúng tôi đã nhận được từ lệnh gọi API trước đó để nhận những tác dụng đầu ra chưa được sử dụng của Bob .
Sau đó, chúng tôi đã tạo một đối tượng người tiêu dùng xây dựng thanh toán giao dịch cho thử nghiệm Bitcoin mạng sử dụng thư viện bitcoinjs .
Trong dòng sau cuối, chúng tôi đã xác lập nguồn vào thanh toán giao dịch. Lưu ý rằng nguồn vào này đang đề cập đến thành phần ở chỉ số 0 của mảng utxo, mà chúng tôi đã nhận được trong lệnh gọi API từ bước trước. Chúng tôi đã trải qua ID thanh toán giao dịch ( txid ) và chuyển từ phương pháp chưa được gửi đến phương pháp transaction. addInput như những tham số nguồn vào .
Về cơ bản, chúng tôi đang xác lập những gì chúng tôi muốn tiêu tốn và chúng tôi lấy nó ở đâu từ .
Tiếp theo, chúng tôi thêm những đầu ra thanh toán giao dịch. Đây là nơi chúng tôi nói cách chúng tôi muốn tiêu tốn những gì chúng tôi đã thêm vào nguồn vào. Trong dòng sau, chúng tôi đã thêm đầu ra thanh toán giao dịch bằng cách gọi phương pháp addOutput trên đối tượng người tiêu dùng trình tạo thanh toán giao dịch và được chuyển vào địa chỉ đích và số lượng. Bob muốn gửi 99990000 satoshi cho Alice. Lưu ý rằng chúng tôi có đã sử dụng địa chỉ testnet Bitcoin của Alice làm tham số tiên phong của hàm

transaction.addOutput (alicePublic, 99990000);

Trong khi chúng tôi chỉ sử dụng một nguồn vào và một đầu ra trong ví dụ này thanh toán giao dịch, một thanh toán giao dịch hoàn toàn có thể có nhiều nguồn vào và đầu ra. Một điều quan trọng cần quan tâm là tổng lượng nguồn vào không được nhỏ hơn tổng số tiền trong tác dụng đầu ra. Hầu hết thời hạn, số tiền trong đầu vào nhiều hơn một chút ít so với lượng đầu ra và sự độc lạ là phí thanh toán giao dịch được cung ứng cho những thợ đào để gồm có thanh toán giao dịch này khi họ khai thác khối tiếp theo .
Trong thanh toán giao dịch này, chúng tôi có 2 nghìn satoshi làm phí thanh toán giao dịch, là sự độc lạ giữa số tiền nguồn vào ( 99992000 ) và đầu ra số tiền ( 99990000 ). Lưu ý rằng chúng tôi không phải tạo bất kể đầu ra nào cho Phí thanh toán giao dịch ; sự độc lạ giữa tổng số tiền nguồn vào và đầu ra được tự động hóa lấy làm phí giao dịchNgoài ra, quan tâm rằng tất cả chúng ta không hề sử dụng một phần tác dụng đầu ra chưa sử dụng. Nếu một người chưa gửi đầu ra có x lượng Bitcoin được link với nó thì tất cả chúng ta phải tiêu tốn toàn bộ x Bitcoin khi thêm đầu ra chưa sử dụng này làm đầu vào trong Giao dịch .
Vì vậy, trong trường hợp Bob không muốn phân phối tổng thể 99,990,000 satoshi được link với hiệu quả đầu ra chưa được sử dụng của anh ấy cho Alice, sau đó chúng tôi cần đưa nó trở lại Bob bằng cách thêm một đầu ra khác vào thanh toán giao dịch với số tiền bằng sự độc lạ của tổng số tiền chưa tiêu và số tiền Bob muốn phân phối cho Alice .

Ký kết đầu vào giao dịch

Bây giờ, chúng tôi đã xác lập những nguồn vào và đầu ra trong thanh toán giao dịch, chúng tôi cần phải ký những nguồn vào bằng những phím của Bob. Dòng mã lệnh gọi sau hàm ký trên đối tượng người tiêu dùng trình tạo thanh toán giao dịch để mã hóa ký thanh toán giao dịch bằng khóa riêng của Bob, nhưng phải mất hàng loạt cặp khóa đối tượng người tiêu dùng như một tham số nguồn vào. transaction.sign ( 0, bobKeys ) ;
Lưu ý rằng hàm transaction.sign lấy chỉ mục của nguồn vào và cặp khóa vừa đủ làm tham số nguồn vào. Trong thanh toán giao dịch này, chính bới chúng tôi chỉ có một nguồn vào, chỉ số tất cả chúng ta đã vượt qua là 0. Ở quy trình tiến độ này, thanh toán giao dịch của chúng tôi đã được chuẩn bị sẵn sàng và ký kết .

Tạo HEX để giao dịch

Bây giờ tất cả chúng ta sẽ tạo một chuỗi hex từ đối tượng người tiêu dùng thanh toán giao dịch. var transactionHex = transaction.build ( ). toHex ( ) ;
Đầu ra của dòng mã này là chuỗi sau, đại diện thay mặt cho thanh toán giao dịch đã sẵn sàng chuẩn bị của chúng tôi ; bước này là thiết yếu vì thanh toán giao dịch gửi API đồng ý thanh toán giao dịch thô dưới dạng một chuỗi

Truyền giao dịch lên mạng

Cuối cùng, chúng tôi sử dụng giá trị chuỗi hex mà chúng tôi đã tạo ở bước ở đầu cuối và gửi nó đến nút testnet công khai minh bạch của trình tò mò khối bằng cách sử dụng API ,

var txPushUrl = blockExplorerTestnetApiEndpoint + 'tx/send'; request.post({url: txPushUrl,json: {
rawtx: transactionHex
}
}, function (err, res, body) {
if (err) console.log(err);
console.log(res);
console.log(body);
});

Nếu thanh toán giao dịch được gật đầu bởi nút công khai minh bạch của trình tò mò khối, chúng tôi sẽ nhận ID thanh toán giao dịch dưới dạng phản hồi của lệnh gọi API này

{
txid: "db2e5966c5139c6e937203d567403867643482bbd 9a6624752bbc583ca259958"
}

Bây giờ tất cả chúng ta đã có ID thanh toán giao dịch của thanh toán giao dịch của mình, tất cả chúng ta hoàn toàn có thể xem nó lên bất kể trình mày mò testnet trực tuyến nào để xem liệu nó có được khai thác hay không và nó có bao nhiêu xác nhận .
Tổng hợp tổng thể lại với nhau, đây là mã hoàn hảo để gửi Bitcoin thanh toán giao dịch testnet sử dụng JavaScript. Các tham số nguồn vào là Bitcoin những cặp khóa testnet mà chúng tôi đã tạo ở bước 1

var	createTransaction = function (aliceKeys, bobKeys) { getOutputs(bobKeys.getAddress()).then(function (res) {
var utxo = JSON.parse(res.toString());
var transaction = new btc.TransactionBuilder(network);
transaction.addInput(utxo[0].txid, utxo[0].vout);
transaction.addOutput(alicekeys.getAddress(),
99990000);
transaction.sign(0, bobKeys);
var transactionHex = transaction.build().toHex();
var txPushUrl = blockExplorerTestnetApiEndpoint +
'tx/send';
request.post({
url: txPushUrl,
json: {
rawtx: transactionHex
}
}, function (err, res, body) {
if (err) console.log(err);
console.log(res);
console.log(body);
});
});
};

Trong phần này, chúng tôi đã tìm hiểu và khám phá cách chúng tôi hoàn toàn có thể gửi thanh toán giao dịch với mạng thử nghiệm Bitcoin. Tương tự, chúng tôi hoàn toàn có thể gửi những thanh toán giao dịch vào mạng chính Bitcoin bằng cách sử dụng mạng chính làm tiềm năng trong những hàm thư viện và trong những điểm cuối API. Chúng tôi cũng đã sử dụng những API truy vấn để nhận được hiệu quả đầu ra chưa sử dụng của một địa chỉ Bitcoin. Các tính năng này hoàn toàn có thể được sử dụng
để tạo một ứng dụng ví Bitcoin đơn thuần để truy vấn và quản trị Bitcoin địa chỉ và thanh toán giao dịch

Share this:

Like this:

Like

Loading …

Source: https://trade.edu.vn
Category: Blockchain

Vote sao

Trả lời

Email của bạn sẽ không được hiển thị công khai.