Membuat Banyak Transaksi

Transaksi yang dilakukan oleh berbagai klien dimasukkan ke dalam sistem; para penambang mengambil transaksi dari antrian ini dan menambahkannya ke blok. Mereka kemudian akan menambang blok tersebut dan penambang yang menang akan memiliki hak istimewa untuk menambahkan blok tersebut ke blockchain dan dengan demikian mendapatkan sejumlah uang untuk dirinya sendiri.

Kami akan menjelaskan proses penambangan ini nanti ketika kami membahas pembuatan blockchain. Sebelum kita menulis kode untuk beberapa transaksi, mari kita tambahkan fungsi utilitas kecil untuk mencetak konten dari transaksi tertentu.

Menampilkan Transaksi

Itu display_transactionfungsi menerima satu parameter dari jenis transaksi. Objek kamus dalam transaksi yang diterima disalin ke variabel sementara yang dipanggildict dan menggunakan kunci kamus, berbagai nilai dicetak di konsol.

def display_transaction(transaction):
   #for transaction in transactions:
   dict = transaction.to_dict()
   print ("sender: " + dict['sender'])
   print ('-----')
   print ("recipient: " + dict['recipient'])
   print ('-----')
   print ("value: " + str(dict['value']))
   print ('-----')
   print ("time: " + str(dict['time']))
   print ('-----')

Selanjutnya, kami menentukan antrian transaksi untuk menyimpan objek transaksi kami.

Antrian Transaksi

Untuk membuat antrian, kami mendeklarasikan global list variabel yang disebut transactions sebagai berikut -

transactions = []

Kami hanya akan menambahkan setiap transaksi yang baru dibuat ke antrian ini. Harap dicatat bahwa untuk singkatnya, kami tidak akan menerapkan logika manajemen antrian dalam tutorial ini.

Membuat Banyak Klien

Sekarang, kita akan mulai membuat transaksi. Pertama, kami akan membuat empat klien yang akan saling mengirim uang untuk mendapatkan berbagai layanan atau barang dari orang lain.

Dinesh = Client()
Ramesh = Client()
Seema = Client()
Vijay = Client()

Saat ini, kami memiliki empat klien bernama Dinesh, Ramesh, Seema, dan Vijay. Saat ini kami berasumsi bahwa masing-masing klien ini memegang beberapa TPCoin di dompet mereka untuk bertransaksi. Identitas masing-masing klien ini akan ditentukan dengan menggunakan properti identitas objek ini.

Membuat Transaksi Pertama

Sekarang, kami memulai transaksi pertama kami sebagai berikut -

t1 = Transaction(
   Dinesh,
   Ramesh.identity,
   15.0
)

Dalam transaksi ini Dinesh mengirimkan 5 TPCoin ke Ramesh. Agar transaksi berhasil, kami harus memastikan Dinesh memiliki cukup uang di dompetnya untuk pembayaran ini. Perhatikan bahwa, kita memerlukan transaksi genesis untuk memulai sirkulasi TPCoin dalam sistem. Anda akan menulis kode transaksi untuk transaksi genesis ini segera setelah Anda membaca.

Kami akan menandatangani transaksi ini menggunakan kunci pribadi Dinesh dan menambahkannya ke antrian transaksi sebagai berikut -

t1.sign_transaction()
transactions.append(t1)

Setelah transaksi pertama dilakukan oleh Dinesh, kami akan membuat beberapa transaksi lagi antara klien berbeda yang kami buat di atas.

Menambahkan Lebih Banyak Transaksi

Kami sekarang akan membuat beberapa transaksi lagi, setiap transaksi diberikan beberapa TPCoin ke pihak lain. Ketika seseorang membelanjakan uang, dia tidak perlu memeriksa saldo yang cukup di dompet ini. Penambang dengan cara apapun akan memvalidasi setiap transaksi untuk saldo yang dimiliki pengirim saat memulai transaksi.

Jika saldo tidak mencukupi, penambang akan menandai transaksi ini sebagai tidak valid dan tidak akan menambahkannya ke blok ini.

Kode berikut membuat dan menambahkan sembilan transaksi lagi ke antrian kami.

t2 = Transaction(
   Dinesh,
   Seema.identity,
   6.0
)
t2.sign_transaction()
transactions.append(t2)
t3 = Transaction(
   Ramesh,
   Vijay.identity,
   2.0
)
t3.sign_transaction()
transactions.append(t3)
t4 = Transaction(
   Seema,
   Ramesh.identity,
   4.0
)
t4.sign_transaction()
transactions.append(t4)
t5 = Transaction(
   Vijay,
   Seema.identity,
   7.0
)
t5.sign_transaction()
transactions.append(t5)
t6 = Transaction(
   Ramesh,
   Seema.identity,
   3.0
)
t6.sign_transaction()
transactions.append(t6)
t7 = Transaction(
   Seema,
   Dinesh.identity,
   8.0
)
t7.sign_transaction()
transactions.append(t7)
t8 = Transaction(
   Seema,
   Ramesh.identity,
   1.0
)
t8.sign_transaction()
transactions.append(t8)
t9 = Transaction(
   Vijay,
   Dinesh.identity,
   5.0
)
t9.sign_transaction()
transactions.append(t9)
t10 = Transaction(
   Vijay,
   Ramesh.identity,
   3.0
)
t10.sign_transaction()
transactions.append(t10)

Saat Anda menjalankan kode di atas, Anda akan memiliki sepuluh transaksi dalam antrian untuk penambang untuk membuat blok mereka.

Transaksi Dumping

Sebagai manajer blockchain, Anda mungkin ingin meninjau konten antrian transaksi secara berkala. Untuk tujuan ini, Anda dapat menggunakan filedisplay_transactionfungsi yang kami kembangkan sebelumnya. Untuk membuang semua transaksi dalam antrian, cukup ulangi daftar transaksi dan untuk setiap transaksi yang direferensikan, panggildisplay_transaction berfungsi seperti yang ditunjukkan di sini -

for transaction in transactions:
   display_transaction (transaction)
   print ('--------------')

Transaksi dipisahkan dengan garis putus-putus untuk membedakan. Jika Anda menjalankan kode di atas, Anda akan melihat daftar transaksi seperti yang ditunjukkan di bawah ini -

sender:
30819f300d06092a864886f70d010101050003818d0030818902818100bb064c99c49214
4a9f463480273aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329e
c86794b04d773eb4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b
47e5157f8fe56c2ce3279c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311
c4d866c12d79d3fc3034563dfb0203010001
-----
recipient:
30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e
674abe7abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8ad
d126b6e1a1308fb98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa93977
04de625d1836d3f42c7ee5683f6703259592cc24b09699376807f28fe0e00ff882974484
d805f874260dfc2d1627473b910203010001
-----
value: 15.0
-----
time: 2019-01-14 16:18:01.859915
-----
--------------
sender:
30819f300d06092a864886f70d010101050003818d0030818902818100bb064c99c49214
4a9f463480273aba93ac1db1f0da3cb9f3c1f9d058cf499fd8e54d244da0a8dd6ddd329e
c86794b04d773eb4841c9f935ea4d9ccc2821c7a1082d23b6c928d59863407f52fa05d8b
47e5157f8fe56c2ce3279c657f9c6a80500073b0be8093f748aef667c03e64f04f84d311
c4d866c12d79d3fc3034563dfb0203010001
-----
recipient:
30819f300d06092a864886f70d010101050003818d0030818902818100a070c82b34ae14
3cbe59b3a2afde7186e9d5bc274955d8112d87a00256a35369acc4d0edfe65e8f9dc93fb
d9ee74b9e7ea12334da38c8c9900e6ced1c4ce93f86e06611e656521a1eab561892b7db0
961b4f212d1fd5b5e49ae09cf8c603a068f9b723aa8a651032ff6f24e5de00387e4d0623
75799742a359b8f22c5362e5650203010001
-----
value: 6.0
-----
time: 2019-01-14 16:18:01.860966
-----
--------------
sender:
30819f300d06092a864886f70d010101050003818d0030818902818100be93b516b28c6e
674abe7abdb11ce0fdf5bb728b75216b73f37a6432e4b402b3ad8139b8c0ba541a72c8ad
d126b6e1a1308fb98b727beb63c6060356bb177bb7d54b54dbe87aee7353d0a6baa93977
04de625d1836d3f42c7ee5683f6703259592cc24b09699376807f28fe0e00ff882974484
d805f874260dfc2d1627473b910203010001
-----
recipient:
30819f300d06092a864886f70d010101050003818d0030818902818100cba097c0854876
f41338c62598c658f545182cfa4acebce147aedf328181f9c4930f14498fd03c0af6b0cc
e25be99452a81df4fa30a53eddbb7bb7b203adf8764a0ccd9db6913a576d68d642d8fd47
452590137869c25d9ff83d68ebe6d616056a8425b85b52e69715b8b85ae807b84638d8f0
0e321b65e4c33acaf6469e18e30203010001
-----
value: 2.0
-----
time: 2019-01-14 16:18:01.861958
-----
--------------

Untuk singkatnya, saya hanya mencetak beberapa transaksi pertama dalam daftar. Pada kode di atas, kami mencetak semua transaksi yang dimulai dengan transaksi pertama kecuali transaksi genesis yang tidak pernah ditambahkan ke daftar ini. Karena transaksi ditambahkan ke blok secara berkala, Anda biasanya hanya tertarik untuk melihat daftar transaksi yang belum ditambang. Dalam hal ini, Anda perlu membuat filefor loop untuk mengulang melalui transaksi yang belum ditambang.

Sejauh ini, Anda telah mempelajari cara membuat klien, mengizinkan mereka untuk berada di antara mereka sendiri, dan menjaga antrian transaksi tertunda yang akan ditambang. Sekarang, sampai pada bagian terpenting dari tutorial ini dan itu adalah membuat blockchain itu sendiri. Anda akan mempelajarinya di pelajaran berikutnya.