Post
Topic
Board Bahasa Indonesia (Indonesian)
Merits 9 from 3 users
Re: [CHALLENGE] Merit Challenge Lokal Board Indonesia | RESMI & RUNNING
by
abhiseshakana
on 25/11/2018, 23:27:02 UTC
⭐ Merited by dbshck (5) ,elda34b (2) ,mu_enrico (2)
Ulasan Challenge #6 - Mining Quiz Periode-5

- Archived
- Jumlah partisipan : 2
- Link jawaban peserta quiz : Sheets Jawaban

* Partisipasi Challenge #6 - Mining Quiz - Periode 5

* Account : Dante.444
* Link Profile : https://bitcointalk.org/index.php?action=profile;u=2312054
* Sudah mengisi Form submit jawaban : Ya

Jawaban salah dan tidak memenuhi syarat* (No reward)


* Partisipasi Challenge #6 - Mining Quiz - Periode 5

* Account : GirL-Miner
* Link Profile : https://bitcointalk.org/index.php?action=profile;u=2447454
* Sudah mengisi Form submit jawaban : Ya

Jawaban benar 1, tetapi tidak memenuhi syarat* (No reward)


* Rules : Setiap jawaban harus diuraikan dengan jelas (harus ada langkah-langkah pengerjaannya)




Pembahasan


Pertanyaan :


Quote
Diketahui sebuah Coin mempunyai algoritma mining Sha256, dengan data-data Block header sebagai berikut :

Version536870912
Previous Block00000000000000002ac7f20c4b909f5857d3363700d3648958fd4675beb534a2
Merkle Roote04a3b043d76ace078283db0ff61910f61cb06a685f5a3dee0701d48c064c9f4
Time2018-Nov-08 22:28:09 (UTC)
Bits420106321
Nonce3021489935

1. Dengan ke-6 data diatas, sebuah node dapat melakukan proses verifikasi dengan cara mencari hash dari Block tersebut. Berapakah nilai Hash dari Block yang dimaksud ?
2. Dan jika diketahui hashrate dari sebuah Pool sebesar 2 Ph/s, berapa rata-rata Block yang dapat ditemukan dalam 24 jam jika menggunakan ketentuan Pool Difficulty (PDiff) ?



Jawaban :

1. Merubah ke-6 fields diatas dengan melakukan swap endian (reverse per Byte). Supaya tidak terjadi kesalahan penulisan data, lebih mudah jika Hex digit dipisahkan per 1 byte (2 Hex digits)

- Convert Version ke hex, lalu lakukan swap endian (reverse per Byte)
Version536870912
Version (Hex)20 00 00 00
Reverse00 00 00 20

- Lakukan swap endian (reverse per Byte) pada Previous Block
Previous Block00 00 00 00 00 00 00 00 2a c7 f2 0c 4b 90 9f 58 57 d3 36 37 00 d3 64 89 58 fd 46 75 be b5 34 a2
Reversea2 34 b5 be 75 46 fd 58 89 64 d3 00 37 36 d3 57 58 9f 90 4b 0c f2 c7 2a 00 00 00 00 00 00 00 00
Reversea234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000

- Reverse Merkle Root (swap endian)
Merkle Roote0 4a 3b 04 3d 76 ac e0 78 28 3d b0 ff 61 91 0f 61 cb 06 a6 85 f5 a3 de e0 70 1d 48 c0 64 c9 f4
Reversef4 c9 64 c0 48 1d 70 e0 de a3 f5 85 a6 06 cb 61 0f 91 61 ff b0 3d 28 78 e0 ac 76 3d 04 3b 4a e0
Reversef4c964c0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae0


- Merubah bentuk waktu ke (epoch) timestamp, lalu convert to Hex dan lakukan swap endian (reverse).
Time2018-Nov-08 22:28:09
Timestamp1541716089 (https://timestampgenerator.com)
Timestamp (Hex)5be4b879
Reverse79b8e45b

- Merubah Bits ke bentuk Hex, lalu lakukan swap endian (reverse)
Bits420106321
Bits (Hex)190a5051
Reverse51500a19

- Merubah Nonce ke bentuk Hex, lalu lakukan swap endian (reverse)
Nonce3021489935
Nonce (Hex)b418470f
Reverse0f4718b4

- Mencari nilai Header_Hex = Rev Version + Rev Prev Block + Rev Merkle Root + Rev Timestamp + Rev Rev Bits + Rev Nonce
Header_Hex = 00000020 + a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000 + f4c964c0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae0 + 79b8e45b + 51500a19 + 0f4718b4

- Melakukan double hashing pada Header_Hex, dan untuk final hash harus dilakukan swap endian (reverse)
Double Hashing Sha256= Sha256 (sha256 (Header_Hex))
Block hash= Reverse (Double Hashing Sha256)

# Cara 1 menggunakan calculator dari http://extranet.cryptomathic.com/hashcalc/index
sha256 (Header_Hex) = Sha256(00000020a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000f4c964c 0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae079b8e45b51500a190f4718 b4)

sha256 (Header_Hex) = 9693d04d327f184ebf97e70995ac1b844cf79c9231b449095a1030887c8e2732



Sha256 (Sha256 (Header_Hex) = Sha256 (9693d04d327f184ebf97e70995ac1b844cf79c9231b449095a1030887c8e2732)
Double Hashing Sha256    = 04b1bccf8b83dbac2921233c100132d07515ecbfd18f23cc0100000000000000
Double Hashing Sha256    = 04 b1 bc cf 8b 83 db ac 29 21 23 3c 10 01 32 d0 75 15 ec bf d1 8f 23 cc 01 00 00 00 00 00 00 00



Lalu lakukan swap endian (reverse per Byte) untuk Final Hash
Block hash      = 00 00 00 00 00 00 00 01 cc 23 8f d1 bf ec 15 75 d0 32 01 10 3c 23 21 29 ac db 83 8b cf bc b1 04
Block hash      = 0000000000000001cc238fd1bfec1575d03201103c232129acdb838bcfbcb104



# Cara 2 melakukan double Hashing dengan Python :

>>> import hashlib, binascii
>>> from binascii import unhexlify
>>> from hashlib import sha256
>>> header = unhexlify("00000020a234b5be7546fd588964d3003736d357589f904b0cf2c72a0000000000000000f4c964c 0481d70e0dea3f585a606cb610f9161ffb03d2878e0ac763d043b4ae079b8e45b51500a190f4718 b4")
>>> sha256(sha256(header).digest()).hexdigest()



Result       = '04b1bccf8b83dbac2921233c100132d07515ecbfd18f23cc0100000000000000' >>> (Swap endian / Reverse per Byte)
Block hash   = 0000000000000001cc238fd1bfec1575d03201103c232129acdb838bcfbcb104


Valid Proof :

https://explorer.litecoinca.sh/block/0000000000000001cc238fd1bfec1575d03201103c232129acdb838bcfbcb104



2. Diketahui Bits = 420106321 = 190a5051
Target = Coefficient * 2^(8 * (exponent - 3)
Target = 0x0a5051 * 2^(8 * (0x19 - 3)
Target = 675.921 * 2^(8 * (25 - 3)
Target = 675.921 * 95.780.971.304.118.053.647.396.689.196.894.323.976.171.195.136.475.136
Target = 64.740.369.904.850.778.939.402.017.558.654.008.356.297.610.387.841.410.400.256

Convert to Hex and recall 256 Bit
Hex Target = 0a 5051 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (25 Bytes)
Hex Target = 0000 0000 0000 000a 5051 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 0000 (32 Bytes)

Difficulty_1_target = 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF (PDiff)
Difficulty = difficulty_1_target / current_target
Difficulty = 0x00000000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF / 0x000000000000000a505100000000000000000000000000000000000000000000
Difficulty = 26.959.946.667.150.639.794.667.015.087.019.630.673.637.144.422.540.572.481.103. 610.249.215 / 64.740.369.904.850.778.939.402.017.558.654.008.356.297.610.387.841.410.400.256
Difficulty = 416.431.767,48563219

Block Time = Difficulty * 2^32 / Hashrate
Block Time = 416.431.767,48563219 * 2^32 / 2.000.000.000.000.000 h/s
Block Time = 894,28 second = 14 minute 54,28 second

Block Found (1 Day) = 24 Hour / 894,28 second
Block Found (1 Day) = 86.400 / 894.28
Block Found (1 Day) = 96,6 = 97 Blocks (Average)

 


Ref :
https://en.bitcoin.it/wiki/Block_hashing_algorithm
https://en.bitcoin.it/wiki/Difficulty
https://timestampgenerator.com/
https://www.mobilefish.com/services/big_number/big_number.php
http://extranet.cryptomathic.com/hashcalc/index