Author

Topic: ◉ Bitcoin Protocol Rules ◉ (Read 329 times)

legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
May 21, 2024, 06:49:10 PM
#18

Principles of Bitcoin (Prinsip Dasar Bitcoin)

-snip-
No censorship
Pada dasarnya Bitcoin menggunakan jaringan peer to peer sehingga memungkinkan bagi setiap transaksi untuk dilakukan tanpa adanya perantara dan setiap node yang berada dijaringan tersebut bisa melihat ataupun menyiarkan transaksi tersebut. Dengan tidak adanya sensor pada jaringan Bitcoin berarti tidak ada satu entitas yang bisa mencegah sebuah transaksi yang valid untuk menjadi bagian dari jaringan blockchain bitcoin.

Namun pada perkembangannya, salah satu prinsip dasar Bitcoin tersebut sebagiannya menjadi bias terlebih jika transaksinya sudah masuk ke exchange yang menerapkan KYC.
Kemudian salah satu contoh penyensoran yang beberapa waktu lalu pernah ada adalah transaksi Coinjoin di wallet semisal Wasabi yang menggunakan zkSNACKs sebagai coordinator-nya, dimana dalam hal ini ada penyensoran terhadap transaksi penggunanya dan hal tersebut memicu cukup banyak penentangan dari sebagian komunitas Bitcoin yang nampak di berbagai media termasuk di Bitcointalk.
https://bitcointalksearch.org/topic/m.63334000
https://bitcoinmagazine.com/business/wasabi-wallet-explains-new-bitcoin-censorship

Privacy-focused Bitcoin wallet Wasabi Wallet announced on Sunday it would start preventing certain unspent transaction outputs (UTXOs) from joining its CoinJoin rounds, sparking surprise and rebellion on Twitter as users wondered why the project would make a decision supposedly contrarian to the uncensorable ethos of Bitcoin.
sr. member
Activity: 192
Merit: 262
Rollbit.com - Crypto Futures
May 20, 2024, 07:55:06 PM
#17

Principles of Bitcoin (Prinsip Dasar Bitcoin)


  • 21.000.000 BTC
  • No censorship
  • Open Source
  • Permissionless
  • Pseudonymous
  • Fungible
  • Irreversible Transactions



21.000.000 BTC

/** The amount of satoshis in one BTC. */
static constexpr CAmount COIN = 100000000;
static constexpr CAmount MAX_MONEY = 21000000 * COIN;

Sebelum code diatas di tambahkan ke Source Code Bitcoin pada tahun 2021, penjelasan mengenai cap 21 Juta coin bitcoin di relevansikan ke kode berikut

CAmount GetBlockSubsidy(int nHeight, const Consensus::Params& consensusParams)
{
    int halvings = nHeight / consensusParams.nSubsidyHalvingInterval;
    // Force block reward to zero when right shift is undefined.
    if (halvings >= 64)
        return 0;

    CAmount nSubsidy = 50 * COIN;
    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= halvings;
    return nSubsidy;

Berdasarkan code tersebut, dapat diketahui jika nilai 21 Juta merupakan bagian integral dari Block Subsidy, dan karena unit terkecil dari Bitcoin adalah 1 satoshi (0.00000001 BTC), sehingga berdasarkan interval halving yang terjadi setiap 4 tahunnya, maka pada saat proses pendistribusian block subsidy mencapai halving yang ke-32, supply Bitcoin akan mencapai limit 2.099.999.997.690.000 Satoshi (20.999.999,9769 BTC).


No censorship
Pada dasarnya Bitcoin menggunakan jaringan peer to peer sehingga memungkinkan bagi setiap transaksi untuk dilakukan tanpa adanya perantara dan setiap node yang berada dijaringan tersebut bisa melihat ataupun menyiarkan transaksi tersebut. Dengan tidak adanya sensor pada jaringan Bitcoin berarti tidak ada satu entitas yang bisa mencegah sebuah transaksi yang valid untuk menjadi bagian dari jaringan blockchain bitcoin.


Open Source
Bitcoin merupakan Open Source yang mana code dari Bitcoin itu sendiri memang di publikasikan secara terbuka, tidak ada rahasia dan didistribusikan online secara gratis, sehingga siapapun bisa melihat, menggunakan code tersebut atau bahkan mengajukan usulan terhadap perubahan serta melakukan perbaikan dan pemeliharaan. Open Source pada Bitcoin sejalan dengan prinsip Decentralized.


Permissionless
Jaringan Permissionless sepenuhnya adalah decentralized, sehingga tidak ada lagi yang namanya Otoritas pusat, sehingga siapapun bisa dengan bebas bergabung dan berkontribusi didalam jaringan Blockchain Bitcoin karena akses pada jaringan Bitcoin tidak dikendalikan oleh entitas manapun, sehingga untuk menjadi bagian dari jaringan Bitcoin tidak memerlukan adanya persetujuan secara eksplisit.


Pseudonymous
Semua transaksi yang berada di jaringan blockchain Bitcoin bersifat publik sehingga memungkinkan bagi siapa saja untuk melihat dan melacaknya, namun transaksi itu hanyalah bersifat pseudonymous karena tidak bisa diketahui siapa pemilik aslinya dalam dunia real (kecuali pada system transaksi yang menjadikan KYC sebagai mandatory) dan yang menjadi samaran tersebut hanyalah berupa address yang terkorelasi dengan transaksi, sehingga akan cukup sulit untuk diidentifikasi secara langsung mengenai identitas asli dari pemilik dibalik transaksi tersebut.


Fungible
Bitcoin memiliki nilai karena adanya kepercayaan yang muncul dan membuat Bitcoin memiliki marketnya sendiri. Nilai itulah yang membuat bitcoin memiliki fungibilitas dan menjadikan sebagai aset yang bisa diperdagangkan dan digunakan untuk bertransaksi terhadap Fiat, barang maupun aset lainnya, namun fungibilitas Bitcoin berbeda dengan fungibilitas yang dimiliki oleh Fiat.


Irreversible Transactions
Pada dasarnya jika semua node berlaku dan bersikap normal (tidak ada indikasi yang mengarah ke Bad node) maka semua transaksi di jaringan Bitcoin bersifat final dan tidak dapat diubah. Namun tetap tidak bisa dipungkiri jika ada node yang berlaku tidak sewajarnya, maka akan ada potensi serangan yang membuat transaksi Bitcoin menjadi reversible, salah satu contohnya adalah serangan double-spending. Tindakan preventif yang bisa dilakukan untuk mencegah terjadinya potensi serangan adalah dengan cara memastikan transaksi sudah mendapatkan konfirmasi Block (semakin banyak konfirmasi yang diperoleh akan menjadikan transaksi semakin irreversible).



*Reference Source https://en.bitcoin.it/wiki/Principles_of_Bitcoin
sr. member
Activity: 192
Merit: 262
Rollbit.com - Crypto Futures
January 23, 2024, 04:03:48 AM
#16
* Update

Penambahan Struktur Data dari Transaksi dan Block di post ke #2, meliputi

  • Bitcoin Transaction Structure
    • Transaction Input Structure
    • Transaction Output Structure
  • Bitcoin Block Structure
    • Block Header Structure
legendary
Activity: 2366
Merit: 2054
January 15, 2024, 10:31:13 PM
#15
Dulu saya pernah membaca thread Om Joniboini yang ini namun karena saat itu pemahaman saya masih cetek jadinya masuk telinga kanan keluar telinga kiri. Tapi sekarang dengan adanya Om @HusnaQA yang menjawab setiap pertanyaan saya, juga Om Punk.zin yang akan menjadi wajah baru di SFI sebagai pakar kripto (meskipun dari histori terlihat bahwa Kang Punk.zin memang sudah pakarnya sedari dulu), saya merasa beruntung karena punya senior-senior seperti Om-Om berdua.
Kalau sekiranya belum paham dan ada kurang dimengerti, baiknya ditanya langsung di thread tersebut. Jadinya kan postingan sampeyan ini tidak jadi kayak membanding-bandingkan kalau postnya si joni itu bikin sampeyan pening, padahal kan isinya sama saja malah lebih luas lagi temanya, cuma thread yang ini agak lebih refresh aja, dan saya yakin juga sampeyan bacanya agak pening kalau dibanding membaca sejarah bitcoin yang ditulis oleh joniboini.

juga Om Punk.zin yang akan menjadi wajah baru di SFI sebagai pakar kripto
Saya juga dulu penerjemah, dan kadang juga tidak mengerti apa yang saya terjemahkan, artinya si penerjemah itu belum tentu bisa disebut pakar crypto kalau jawabannya masih secara garis besar dan tidak detil pertanyaan.
legendary
Activity: 1526
Merit: 1032
Up to 300% + 200 FS deposit bonuses
January 11, 2024, 05:50:26 PM
#14
Sebetul nya saya juga ingin kang, akang bisa cek post saya keingin tahuan saya besar tapi bingung mulai dari mana malah saya sampai saat ini baru mengenal beberapa wallet dan sign message, terlebih saya bukan backgroud yang faham bahasa pemrograman ataupun matematik. Penyesalan saya datang ahir-ahir ini tidak mengukuti forum ini secara fungsi utama nya dari awal dulu dan hanya berburu di masa lalu. Tidak sepraktis yang saya bayangkan karena di saat ini saya membutuhkan bahasan seperti ini.
kalau ane dulu, dari mempelajari hal yang cukup sulit dulu, baru bisa mempelajari hal yang mudah. Malah ane dulu nekat sampai bikin thread di globar board segala mengenai Derivation Path dimana cukup teknis sekali sebagai cara mendapatkan tipe alamat bitcoin. Kuncinya itu pelajari aja semampu ente, kalau cuma sebatas itu ya sudah, jangan dipaksa, karena kalau dipaksa dan tidak mampu malah jadi bikin stres dan mungkin jadi tertarik lagi pada bitcoin, dan meninggalkan forum kayak yang lain.
sr. member
Activity: 686
Merit: 407
rollbit.com/trading
January 11, 2024, 10:03:01 AM
#13
Btw, ada sedikit yang ingin saya tanyakan.. Kenapa model thread seperti ini cenderung sepi peminat ? Padahal bagi yang memang ingin memperdalam pengetahuan mengenai Bitcoin secara tekhnikal khususnya, serta potensi mendapatkan apresiasi merit, saya rasa thread ini bisa menjadi jalan.
Saya pribadi sangat ingin mempelajari dan mencari tahu perihal Bitcoin lebih dalam. Tapi sebagai orang awam saya kesulitan memahami beberapa thread yang agak technical bagi saya. Dan thread ini meskipun dianggap teknikal tapi entah kenapa thread ini membuka jalan buntu di pikiran saya perihal Bitcoin. Ada beberapa ilmu baru yang saya ketahui disini seperti dificulty dalam pembuatan blok baru.

Terimakasih banyak Kang Punk.zin atas ilmunya. Jujur saya sangat terbantu dengan pembahasan Bitcoin versi bahasa Indonesia. Karena dalam bahasa inggris saya masih sulit memahami beberapa istilah-istilah yang technical. Belum lagi jika ada poin-poin yang sulit dicerna akan lebih mudah jika dibahasakan dalam bahasa Indonesia. Membaca thread ini serasa merestrukturisasi kembali pemahaman saya tentang Bitcoin.

Oh ya, thread terjemahan om jon mengenai Bitcoin berikut ini juga bisa dipelajari: [EDUKASI] Semua Hal Tentang Bitcoin
Dulu saya pernah membaca thread Om Joniboini yang ini namun karena saat itu pemahaman saya masih cetek jadinya masuk telinga kanan keluar telinga kiri. Tapi sekarang dengan adanya Om @HusnaQA yang menjawab setiap pertanyaan saya, juga Om Punk.zin yang akan menjadi wajah baru di SFI sebagai pakar kripto (meskipun dari histori terlihat bahwa Kang Punk.zin memang sudah pakarnya sedari dulu), saya merasa beruntung karena punya senior-senior seperti Om-Om berdua.
legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
January 11, 2024, 09:10:11 AM
#12
Sebetul nya saya juga ingin kang, akang bisa cek post saya keingin tahuan saya besar tapi bingung mulai dari mana malah saya sampai saat ini baru mengenal beberapa wallet dan sign message, terlebih saya bukan backgroud yang faham bahasa pemrograman ataupun matematik. Penyesalan saya datang ahir-ahir ini tidak mengukuti forum ini secara fungsi utama nya dari awal dulu dan hanya berburu di masa lalu. Tidak sepraktis yang saya bayangkan karena di saat ini saya membutuhkan bahasan seperti ini.

Agan bisa memulai dari mana saja yang sekiranya dianggap lebih mudah terlebih dulu (jika mengenai wallet dan sign message sudah cukup paham, lanjut ke materi lainnya).

Isi topik Bitcoin Protocol Rules ini juga bisa dibilang runut dan menjelaskan poin-poin aturan Protokol dari Bitcoin itu apa saja. Kalaupun agan mau mempelajarinya, bisa dengan menyingkat sub-sub judulnya dulu sebelum masuk ke definisi dan penjelasan lanjutnya. Seperti contoh:

Quote
Bitcoin Protocol Rules:

● Data structures
● Difficulty adjustment
● Block creation fee (Block Subsidy)
● "TX" Messages
● "BLOCK" Messages

Nah dari sana agan bisa saja fokus pada satu sub judul dulu semisal pada "Data structures" pada Bitcoin; Cari beberapa referensi pembanding lain yang menjelaskan tentangnya sebelum masuk ke sub judul lain. Contoh:

- https://en.bitcoin.it/wiki/Protocol_rules#Data_structures
  Sumber awal yang digunakan OP dan bisa dijadikan pembanding; Saya lihat beberapa bagiannya sudah dirangkum OP;

- https://www.oreilly.com/library/view/mastering-bitcoin/9781491902639/ch07.html
  Bahasannya lebih detail dari link sumber di atas.

Kalau masih ada yang bingung dari bahasan thread, silahkan bertanya, mudah-mudahan teman-teman yang lain bisa bantu jawab.
Oh ya, thread terjemahan om jon mengenai Bitcoin berikut ini juga bisa dipelajari: [EDUKASI] Semua Hal Tentang Bitcoin

Selamat belajar
sr. member
Activity: 812
Merit: 257
PredX - AI-Powered Prediction Market
January 10, 2024, 10:29:28 PM
#11
Pada bagian Catatan kaki yang berikut ini mungkin bisa diterjemahkan dan ditambahkan sekalian pada thread terjemahan agan sebagai catatan pelengkap dari beberapa poin yang tertera pada tulisan utama Bitcoin Protocol Rules (seperti contoh pada ● "TX" Messages nomor 6 sedikitnya disana saya lihat ada 3 catatan kaki tambahan):
Done. Terima kasih atas masukannya kang Anwar

Btw, ada sedikit yang ingin saya tanyakan.. Kenapa model thread seperti ini cenderung sepi peminat ? Padahal bagi yang memang ingin memperdalam pengetahuan mengenai Bitcoin secara tekhnikal khususnya, serta potensi mendapatkan apresiasi merit, saya rasa thread ini bisa menjadi jalan.
Sebetul nya saya juga ingin kang, akang bisa cek post saya keingin tahuan saya besar tapi bingung mulai dari mana malah saya sampai saat ini baru mengenal beberapa wallet dan sign message, terlebih saya bukan backgroud yang faham bahasa pemrograman ataupun matematik. Penyesalan saya datang ahir-ahir ini tidak mengukuti forum ini secara fungsi utama nya dari awal dulu dan hanya berburu di masa lalu. Tidak sepraktis yang saya bayangkan karena di saat ini saya membutuhkan bahasan seperti ini.
============================================
(Maaf melenceng) Apakah ada cara biar belajar di forum terutama utas teknis bitcoin seperti ini supaya tidak pecah fokus gan? jika ada saran, mungkin format pemecahan inti bahasan atau pengelompokan isi dalam bentuk spreed sheet? . Beda orang beda balasan pesan, ada yang netral, membandingkan sumber, fungsi bahkan dari segi kontranya (merujuk ke utas lain) seperti di utas ini tentang teknis bitcoin respon nya macam-macam, kalau sistem sks (sistem kebut semalam) puyeng juga. Kalau memang replay saya lebih pantas di balas via PM saya juga tidak papa gan, inbok saya terbuka lebar untuk agan semua.
Saya cek utas agan bagus-bagus, nambah lagi nih user yang saya sukain karya nya di SFI, termasuk agan agan senior lain nya yang aktif di utas teknis.
legendary
Activity: 2870
Merit: 7490
Crypto Swap Exchange
January 10, 2024, 04:09:12 AM
#10
Btw, ada sedikit yang ingin saya tanyakan.. Kenapa model thread seperti ini cenderung sepi peminat ? Padahal bagi yang memang ingin memperdalam pengetahuan mengenai Bitcoin secara tekhnikal khususnya, serta potensi mendapatkan apresiasi merit, saya rasa thread ini bisa menjadi jalan.

Salah satu alasannya adalah eksistensi board lain di forum ini untuk membahas segi teknis Bitcoin.

1. Misal nih ada pertanyaan, dari mana T-10 menit itu datang?, kok tiap block bitcoin hanya bisa ditambang tiap 10 menit?

10 menit adalah arbitary number (dipilih secara acak). Tetapi beberapa Bitcoin developer menyatakan bahwa 10 menit cukup bagus karena dalam 10 menit, block biasanya sudah diterima oleh semua Bitcoin node. Tetapi dengan perkembangan teknologi, pernyataan tersebut sudah tidak relevan.

kok beda ya sama ethereum yang hanya 11-20 detik?

Seingat saya, angka tersebut dipilih karena Vitalik menginginkan transaksi dikonfirmasi lebih cepat, meskipun dengan resiko stale/orphan block.
legendary
Activity: 2254
Merit: 2253
From Zero to 2 times Self-Made Legendary
January 09, 2024, 05:32:13 AM
#9
Jadi, Kalau aku baca keseluruhan thread translate ini, permukaannya saja yang agak teknis padahal ya sering kita temui sehari-hari, misal kayak: Block creation fee, kalau bahasa awamnya kan reward mining.
Lebih tepatnya Block creation fee atau Block subsidy merupakan bagian dari reward mining, dimana masih ada keseluruhan fee transaksi yang ada didalam Block tersebut yang juga merupakan bagian dari reward mining.


Menerjemahkan thread semacam ini perlu pengetahuan juga tentang istilah tertentu yang mana tidak bisa begitu saja dipaksakan diterjemahkan semuanya kedalam bahasa Indonesia yang justru malah menjadi aneh dan bisa saja malah membuat bias makna dari kalimat yang tercantum kata tersebut atau lebih fatalnya bisa membuat error jika digunakan.
Bener Kang, tidak bisa diterjemahkan bulat-bulat karena bahasa teknis dan Mathematics merupakan suatu hal yang tricky
sr. member
Activity: 192
Merit: 262
Rollbit.com - Crypto Futures
January 08, 2024, 11:26:32 PM
#8
1. Misal nih ada pertanyaan, dari mana T-10 menit itu datang?, kok tiap block bitcoin hanya bisa ditambang tiap 10 menit?, kok beda ya sama ethereum yang hanya 11-20 detik?
Sudah jelas berbeda dengan Ethereum, karena baik Bitcoin dan Ethereum memiliki protocol yang berbeda.

T 10 Menit, erat kaitannya dengan adanya Difficulty dan Target yang selalu menjadi bagian dari pembuatan sebuah Block. Pada dasarnya Difficulty adalah sebuah tolok ukur seberapa sulit untuk mendapatkan hash yang valid yang sesuai atau kurang dari Target yang sudah ditentukan. Sehingga untuk setiap kondisi (contoh : Hashrate global naik), maka nilai dari Difficulty dan Target akan mengalami perubahan untuk memastikan bahwa untuk waktu pembuatan Block tetap berada disekitaran 1 Jam untuk per 6 Blocks-nya.


Quote
2. dari mana 2016 itu datang?, kenapa tidak 2000, 2030, 2060, dst?.
2016 layaknya sebuah nomor random seperti halnya angka-angka dan variabel lain yang ada di Bitcoin yang tidak diketahui alasan pemilihannya selain oleh Satoshi sendiri.

Quote
3. pernah gak terjadi, Difficulty baru akan mengalami kenaikan jika SM > MT, dan sebaliknya Difficulty baru akan mengalami penurunan jika SM < MT?
Ini sudah merupakan ketentuan protocol. Jadi jika waktu aktual untuk membuat 2016 Blocks lebih dari 2 Minggu maka Difficulty akan menurun (dengan nilai Target yang lebih tinggi) dan vice versa.
legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
January 08, 2024, 10:11:14 PM
#7
Artinya, memang untuk mentranslate thread teknis, sipembuatnya harus paham juga teknisnya biar pembaca awam paham.

1. Misal nih ada pertanyaan, dari mana T-10 menit itu datang?, kok tiap block bitcoin hanya bisa ditambang tiap 10 menit?, kok beda ya sama ethereum yang hanya 11-20 detik?
2. dari mana 2016 itu datang?, kenapa tidak 2000, 2030, 2060, dst?.
3. pernah gak terjadi, Difficulty baru akan mengalami kenaikan jika SM > MT, dan sebaliknya Difficulty baru akan mengalami penurunan jika SM < MT?

Aku kira itu saja, banyak hal yang lebih dalam yang akan aku tanyakan selanjutnya ke OP, dan mudah-mudahan OP bisa menjelaskan ke-3 pertanyaan awal ku ini.

Mengenai pertanyaan nomor 1 dan 2, dari yang saya ketahui pada penjelasan Satoshi, diantara kronologis alasannya bisa dilihat pada thread berikut ini:
Proof-of-work difficulty increasing

We had our first automatic adjustment of the proof-of-work difficulty on 30 Dec 2009.  

The minimum difficulty is 32 zero bits, so even if only one person was running a node, the difficulty doesn't get any easier than that.  For most of last year, we were hovering below the minimum.  On 30 Dec we broke above it and the algorithm adjusted to more difficulty.  It's been getting more difficult at each adjustment since then.

The adjustment on 04 Feb took it up from 1.34 times last year's difficulty to 1.82 times more difficult than last year.  That means you generate only 55% as many coins for the same amount of work.

The difficulty adjusts proportionally to the total effort across the network.  If the number of nodes doubles, the difficulty will also double, returning the total generated to the target rate.

For those technically inclined, the proof-of-work difficulty can be seen by searching on "target:" in debug.log.  It's a 256-bit unsigned hex number, which the SHA-256 value has to be less than to successfully generate a block.  It gets adjusted every 2016 blocks, typically two weeks.  That's when it prints "GetNextWorkRequired RETARGET" in debug.log.
-snip-

Satoshi, I figured it will take my modern core 2 duo about 20 hours of nonstop work to create ฿50.00! With older PCs it will take forever. People like to feel that they "own" something as soon as possible, is there a way to make the generation more divisible? So say, instead of making ฿50 every 20 hours, make ฿5 every 2 hours?
I thought about that but there wasn't a practical way to do smaller increments.  The frequency of block generation is balanced between confirming transactions as fast as possible and the latency of the network.

The algorithm aims for an average of 6 blocks per hour.  If it was 5 bc and 60 per hour, there would be 10 times as many blocks and the initial block download would take 10 times as long.  It wouldn't work anyway because that would be only 1 minute average between blocks, too close to the broadcast latency when the network gets larger.

Satoshi juga pernah mencontohkan langsung penghitungan difficulty:

The formula is based on the time it takes to generate 2016 blocks.  The difficulty is multiplied by 14/(actual days taken).  For instance, this time it took 9.4 days, so the calculation was 14/9.4 = 1.49.  Previous difficulty 2.53 * 1.49 = 3.78, a 49% increase.

I don't know what you're talking about accepting easier difficulties.

Sementara untuk pertanyaan nomor 3, jika terjadi demikian maka Block rate akan menjadi tidak stabil dan berimbas pada semakin mudahnya bitcoin baru didapat. Contohnya sebagaimana sebelum diberlakukannya automatic adjustment of the proof-of-work difficulty pada 30 Desember 2009 sebagaimana pada quote pertama Satoshi di atas.

Silahkan dikoreksi jika yang saya pahami diatas keliru.
hero member
Activity: 868
Merit: 737
January 08, 2024, 08:41:01 PM
#6
Btw, ada sedikit yang ingin saya tanyakan.. Kenapa model thread seperti ini cenderung sepi peminat ?
Kalau aku jelas sangat berminat sekali!,
tapi kalau di SFI ini, tidak begitu banyak pembuat thread yang paham juga terhadap apa yang ditulisnya, sehingga ketika ada yang bertanya, rata-rata yang jawab bukan OP, kalau pun menjawab, pengulangan yang ada, sehingga jadi sepi.

Padahal bagi yang memang ingin memperdalam pengetahuan mengenai Bitcoin secara tekhnikal khususnya, serta potensi mendapatkan apresiasi merit, saya rasa thread ini bisa menjadi jalan.
Jadi, Kalau aku baca keseluruhan thread translate ini, permukaannya saja yang agak teknis padahal ya sering kita temui sehari-hari, misal kayak: Block creation fee, kalau bahasa awamnya kan reward mining.

Artinya, memang untuk mentranslate thread teknis, sipembuatnya harus paham juga teknisnya biar pembaca awam paham.

1. Misal nih ada pertanyaan, dari mana T-10 menit itu datang?, kok tiap block bitcoin hanya bisa ditambang tiap 10 menit?, kok beda ya sama ethereum yang hanya 11-20 detik?
2. dari mana 2016 itu datang?, kenapa tidak 2000, 2030, 2060, dst?.
3. pernah gak terjadi, Difficulty baru akan mengalami kenaikan jika SM > MT, dan sebaliknya Difficulty baru akan mengalami penurunan jika SM < MT?

Aku kira itu saja, banyak hal yang lebih dalam yang akan aku tanyakan selanjutnya ke OP, dan mudah-mudahan OP bisa menjelaskan ke-3 pertanyaan awal ku ini.
legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
January 08, 2024, 10:23:48 AM
#5
Pada bagian Catatan kaki yang berikut ini mungkin bisa diterjemahkan dan ditambahkan sekalian pada thread terjemahan agan sebagai catatan pelengkap dari beberapa poin yang tertera pada tulisan utama Bitcoin Protocol Rules (seperti contoh pada ● "TX" Messages nomor 6 sedikitnya disana saya lihat ada 3 catatan kaki tambahan):
Done. Terima kasih atas masukannya kang Anwar

Btw, ada sedikit yang ingin saya tanyakan.. Kenapa model thread seperti ini cenderung sepi peminat ? Padahal bagi yang memang ingin memperdalam pengetahuan mengenai Bitcoin secara tekhnikal khususnya, serta potensi mendapatkan apresiasi merit, saya rasa thread ini bisa menjadi jalan.

Menerjemahkan thread semacam ini perlu pengetahuan juga tentang istilah tertentu yang mana tidak bisa begitu saja dipaksakan diterjemahkan semuanya kedalam bahasa Indonesia yang justru malah menjadi aneh dan bisa saja malah membuat bias makna dari kalimat yang tercantum kata tersebut atau lebih fatalnya bisa membuat error jika digunakan.

  • Sintaks transaksi dan struktur datanya harus benar

Seperti contoh, jika sintaks atau baris perintah yang semisalnya diterjemahkan juga maka bisa jadi error, sebagaimana terjadi beberapa waktu lalu di thread Electrum:

Barusan saya coba periksa command yang agan gunakan ada tipo/masih ada yang kurang penulisan kata dalam bahasa Inggris-nya, sehingga intruksi yang agan input tidak dikenali oleh Electrum (unknown). :)

Kurang huruf "d" pada kata "standar", harusnya ditulis "standard".

Maaf gan auto translate nya hidup, ;D


Namun saya mengapresiasi upaya belajarnya beliau ini meskipun terkadang masih ada beberapa yang keliru.

Perihal mengapa model thread semacam ini sepi peminat, menurut opini saya terletak dari seberapa besar minat/kebutuhan/rasa penasaran member yang ada terhadap konten thread.
Saya juga belum paham kalau untuk semua detailnya (baru sebagian). Hanya saja penasaran ingin membacanya.
sr. member
Activity: 192
Merit: 262
Rollbit.com - Crypto Futures
January 08, 2024, 09:10:52 AM
#4
Pada bagian Catatan kaki yang berikut ini mungkin bisa diterjemahkan dan ditambahkan sekalian pada thread terjemahan agan sebagai catatan pelengkap dari beberapa poin yang tertera pada tulisan utama Bitcoin Protocol Rules (seperti contoh pada ● "TX" Messages nomor 6 sedikitnya disana saya lihat ada 3 catatan kaki tambahan):
Done. Terima kasih atas masukannya kang Anwar

Btw, ada sedikit yang ingin saya tanyakan.. Kenapa model thread seperti ini cenderung sepi peminat ? Padahal bagi yang memang ingin memperdalam pengetahuan mengenai Bitcoin secara tekhnikal khususnya, serta potensi mendapatkan apresiasi merit, saya rasa thread ini bisa menjadi jalan.
legendary
Activity: 2296
Merit: 2892
#SWGT CERTIK Audited
January 07, 2024, 06:11:57 PM
#3

Bitcoin Protocol Rules

"Rules" yang digunakan oleh Bitcoin Client dalam memproses "message" dan mencegah dari adanya potensi "Unauthorized spending" dan "Double spending"
-snip-
*Reference Source https://en.bitcoin.it/wiki/Protocol_rules

Pada bagian Catatan kaki yang berikut ini mungkin bisa diterjemahkan dan ditambahkan sekalian pada thread terjemahan agan sebagai catatan pelengkap dari beberapa poin yang tertera pada tulisan utama Bitcoin Protocol Rules (seperti contoh pada ● "TX" Messages nomor 6 sedikitnya disana saya lihat ada 3 catatan kaki tambahan):

References

  • nLockTime must not exceed 31 bits, as some clients will interpret it incorrectly
  • A valid transaction requires at least 100 bytes. If it's any less, the transaction is not valid
  • The number of signature operands in the signature (no, that is not redundant) for standard transactions will never exceed two
  • Note that this is not a hard requirement on clients.
  • Note that this is not a hard requirement on clients. The network-enforced rule is that only one transaction spending a particular output can be in the blockchain, thus preventing double-spending. Technically miners can choose which one they want to put into the block they're working on as long as no other transaction has spent that output either previously in the blockchain, or in the same block. The in-memory transaction pool can technically be managed in whatever way the miner is willing to implement.
  • This is the protection against double-spending
  • Note that when the transaction is accepted into the memory pool, an additional check is made to ensure that the coinbase value does not exceed the transaction fees plus the expected BTC value (25BTC as of this writing).

Oh ya, bagi teman-teman yang ingin berkontribusi pada Bitcoin Wiki bisa coba ikut gabung diskusi kesini:
- https://bitcointalksearch.org/topic/to-request-edit-access-or-reach-the-wiki-admins-contact-us-on-irc-5135411
- #bitcoin-wiki channel on freenode IRC
sr. member
Activity: 192
Merit: 262
Rollbit.com - Crypto Futures
January 07, 2024, 01:59:25 PM
#2


Struktur Data dari Transaksi dan Block




● Bitcoin Transaction Structure

FieldDescriptionSize
VersionVersi dari struktur data transaksi yang digunakan4 bytes
Flag *0001 hanya untuk segwit transactions, 0x00 menandakan marker dan 0x01 menandakan flag2 bytes
Input CountJumlah dari input yang digunakan dalam transaksi1-9 bytes
InputsList dari input yang digunakan dalam transaksiVariable
Output CountJumlah dari output yang disertakan dalam transaksi1-9 bytes
OutputsList dari output yang disertakan dalam transaksiVariable
Witness data *Serialisasi dari semua witness fields yang ada didalam transaksiVariable
LocktimeBlock Height / Unix timestamp4 bytes

* merupakan fields yang ada di Witness Transaction, untuk Non - Witness Transaction akan memiliki witness field kosong



Transaction Input Structure

FieldDescriptionSize
Transaction HashHash dari unspent outputs dari transaksi sebelumnya (UTXO)32 bytes
Output IndexNomor indeks dari UTXO yang akan digunakan, diawali dengan 04 bytes
ScriptSig SizeUkuran dari Unlocking-Script1-9 bytes
Script signatureSebuah script yang merupakan kunci untuk menggunakan UTXO yang ditautkanVariable
Sequence Number0xFFFFFFFF, jika nSequence < 0xFFFFFFFF transaksi dianggap memiliki opt-in RBF4 bytes


Transaction Output Structure

FieldDescriptionSize
ValueNilai output dalam satuan satoshi8 bytes
ScriptPubKey SizeUkuran dari Locking-Script1-9 bytes
ScriptPubKeyScript pengunci yang memiliki ketentuan bagaimana output bisa digunakanVariable




● Bitcoin Block Structure

FieldDescriptionSize
Magic Number0xD9B4BEF9, sebagai indikasi jika Block merupakan bagian dari jaringan Blockchain4 bytes
BlocksizeUkuran jumlah data yang ditampung dalam Block4 bytes
Block HeaderIdentitas unik dari sebuah block yang merupakan metadata dan terdiri dari 6 fields80 bytes
Transaction counterMerupakan integer positif yang mewakili jumlah transaksi yang terdapat dalam Block1-9 bytes
TransactionsList dari semua transaksi yang berada di dalam BlockVariable


Block Header Structure

FieldDescriptionSize
VersionVersi dari Block4 bytes
Previous Block HashHash dari Block sebelumnya32 bytes
Merkle RootHash dari seluruh transaksi yang berada didalam Block32 bytes
TimestampWaktu sebagai penanda bahwa Block telah ditambahkan ke Blockchain4 bytes
BitsTarget dari sebuah Block, yang mengasumsikan seberapa sulit Hash target ditemukan4 bytes
NonceValue yang digunakan node mining untuk mendapatkan hash yang memenuhi kriteria Block Target4 bytes


*Reference Source https://en.bitcoin.it/wiki/Transaction , https://en.bitcoin.it/wiki/Block , https://en.bitcoin.it/wiki/Block_hashing_algorithm
sr. member
Activity: 192
Merit: 262
Rollbit.com - Crypto Futures
January 07, 2024, 01:59:08 PM
#1

Bitcoin Protocol Rules

"Rules" yang digunakan oleh Bitcoin Client dalam memproses "message" dan mencegah dari adanya potensi "Unauthorized spending"[1] dan "Double spending"[2]


● Data structures

  • Transactions
    • Transaction Pool (Unconfirmed Transactions yang berada di Mempool)
    • Orphan transactions (Transaksi yang dianggap orphan oleh node dan dimasukkan kedalam orphan pool karena parent transaction tidak eksis)
  • Blocks
    • Blocks di rantai utama (Deretan Blocks terpanjang)
    • Blocks di rantai cabang (Deretan blocks disamping rantai utama dengan deretan yang lebih pendek)
    • Orphan blocks



● Difficulty adjustment

Difficulty mengalami perubahan setiap 2016 Bloks baru ditemukan, dimana waktu yang diperkirakan untuk menemukan 2016 Bloks adalah 2 Minggu.

Sementara untuk rumus perubahan Difficulty adalah seperti ini :
D+ = D0 * MT / SM

D+ = New Difficulty (Difficulty baru)
D0 = Initial difficulty (Difficulty sebelum mengalami perubahan)
M = 2016 Blocks
T = 10 minutes
SM = Actual time 2016 Blocks (Waktu yang dibutuhkan untuk membuat 2016 Blocks pada saat Initial difficulty diterapkan)

Jadi pada dasarnya Difficulty baru akan mengalami penurunan jika SM > MT, dan sebaliknya Difficulty baru akan mengalami kenaikan jika SM < MT

* https://www.domob.eu/research/DifficultyControl.pdf



● Block creation fee (Block Subsidy)

Block creation fee atau dikenal juga sebagai Block Subsidy merupakan sebuah insentif yang didapatkan oleh node mining pada saat mereka berhasil membuat sebuah block yang valid. Insentif ini diterima sebagai Coinbase transaction (+ fee transaksi) yang ikut menjadi bagian dari Block yang mereka temukan.

Pada awalnya nilai dari Block Subsidy adalah sebesar 50 BTC yang dimulai dari Genesis Block, dan akan mengalami penurunan sebesar 50% untuk setiap kelipatan 210000 Block baru ditemukan. Pemangkasan nilai Block Subsidy ini dikenal juga dengan istilah Bitcoin Halving

txNew.vout[0].nValue = genesisReward
CTxOut(nValue=50.00000000, scriptPubKey=0x5F1DF16B2B704C8A578D0B)


CAmount nSubsidy = 50 * COIN;
    // Subsidy is cut in half every 210,000 blocks which will occur approximately every 4 years.
    nSubsidy >>= halvings;
    return nSubsidy;
   



● "TX" Messages

Seluruh node di jaringan Bitcoin melakukan verifikasi untuk setiap transasi berdasarkan kriteria sebagai berikut :

  • Sintaks transaksi dan struktur datanya harus benar
  • Memastikan tidak ada Inputs maupun Outputs yang kosong
  • Ukuran transaksi (dalam satuan "byte") harus kurang dari batas atau sama dengan maksimal ukuran block yang sudah ditentukan (SIZE <= MAX_BLOCK_SIZE)
  • Untuk setiap nilai Output beserta nilai totalnya harus berada dalam rentang nilai yang sudah ditentukan (lebih dari 0 dan kurang dari 21 Juta koin)
  • Memastikan tidak ada inputs yang memiliki hash=0, N=–1
  • nLockTime kurang atau sama dengan INT_MAX[3] , Ukuran transaksi lebih besar atau sama dengan 100 bytes[4] dan sig opcount <= 2[5]
  • Untuk setiap transaksi "nonstandard" akan di reject
  • Untuk setiap transaksi baru yang identik dengan yang sudah ada di Mempool atau block valid akan di reject
  • Jika input menggunakan referenced output yang sudah terpakai di transaksi lain yang berada di Mempool, maka akan di reject[6]
  • Jika input menggunakan referenced output dari transaksi yang tidak dapat ditemukan di rantai block utama maupun Mempool, maka akan dianggap sebagai orphan transactions (ditaruh di orphan Pool)
  • Untuk setiap Input yang menggunakan referenced output dari coinbase transaction, maka harus mendapatkan konfirmasi konfirmasi COINBASE_MATURITY (100) (jika tidak transaksi akan di reject)
  • Untuk setiap transaksi yang memiliki Input menggunakan referenced Output yang tidak eksis (atau sudah digunakan) akan di reject[6]
  • Untuk setiap nilai Input beserta nilai totalnya harus berada dalam rentang nilai yang sudah ditentukan (lebih dari 0 dan kurang dari 21 Juta koin)
  • Jika jumlah nilai input lebih kecil dari jumlah nilai output maka transaksi akan di reject
  • Jika fee transaksi terlalu rendah untuk dimasukan ke empty block, maka transaksi akan di reject
  • scriptPubKey untuk setiap input harus diverifikasi, jika tidak sesuai akan di reject
  • Untuk setiap transaksi yang memenuhi kriteria diatas akan dimasukan ke Memory Pool (MemPool)[7]
  • Transaksi akan ditambahkan ke wallet jika berhasil masuk kedalam block valid
  • Transaksi akan disebarkan ke node-node lain
  • Untuk setiap orphan transaction, terapkan semua prosedur (termasuk poin 20 ini) secara rekursif pada orphan transaction tersebut

● "BLOCK" Messages

Seluruh node di jaringan Bitcoin melakukan verifikasi dan validasi untuk setiap block berdasarkan kriteria sebagai berikut :

  • Sintaks block dan struktur datanya harus benar
  • Duplikat Block yang ditemukan di salah satu dari 3 kategori Block yang ada akan di reject
  • List transaksi tidak boleh kosong
  • Block Hash harus memenuhi persyaratan proof of work (hash <= nBits)
  • Block timestamp tidak boleh lebih dari 2 jam kedepannya
  • Transaksi pertama harus merupakan Coinbase transaction
  • Untuk setiap transaksi akan dilakukan pengecekan sesuai prosedur "TX" poin 2 s/d 4
  • Untuk Coinbase transaction, panjang scriptSig harus 2-100
  • Jika sig opcounts > MAX_BLOCK_SIGOPS, maka block akan di reject
  • Melakukan verifikasi terhadap Merkle hash
  • Jika hash previous Block tidak sesuai dengan yang ada di rantai block utama atau rantai block cabang, maka block akan dianggap sebagai orphan block
  • Nilai nBits harus sesuai dengan Difficulty rules
  • Jika timestamp lebih kecil atau sama dengan median time dari 11 Blocks sebelumnya, maka akan di reject
  • Memeriksa block-block lama tertentu, dan memastikan memiliki hash yang sesuai dengan nilai yang diketahui (contoh : Initial Block Download)
  • Memasukan Block kedalam rantai, dimana ada 3 kondisi: (1)Block dengan  deretan terpanjang sebagai rantai utama, (2)rantai cabang dengan deretan block lebih pendek disamping rantai utama dan gagal menjadi rantai utama, (3)rantai cabang yang akhirnya menjadi rantai utama karena memiliki deretan block yang lebih panjang dari rantai utama sebelumnya.
  • Jika kondisi (1) menjadi rantai utama
    • Untuk semua transaksi kecuali coinbase, diterapkan :
      • Jika input menggunakan referenced output dari transaksi yang tidak dapat ditemukan di rantai block utama, maka akan di reject
      • Untuk setiap Input yang menggunakan "n" output dari transaksi sebelumnya, namun nilainya kurang dari "n+1" output, maka akan di reject
      • Untuk setiap Input yang menggunakan referenced output dari coinbase transaction, maka harus mendapatkan konfirmasi konfirmasi COINBASE_MATURITY (100) (jika tidak akan di reject)
      • Melakukan verifikasi crypto signatures untuk setiap input, jika tidak sesuai akan di reject
      • Untuk setiap input yang menggunakan referenced output yang sudah digunakan oleh transaksi lain yang berada di rantai block utama, maka akan di reject
      • Untuk setiap nilai Input beserta nilai totalnya harus berada dalam rentang nilai yang sudah ditentukan (lebih dari 0 dan kurang dari 21 Juta koin)
      • Jika jumlah nilai input lebih kecil dari jumlah nilai output, maka akan di reject
    • Jika nilai coinbase > nilai Block subsidy + transaction fee, maka akan di reject
    • (jika tidak di reject), maka :
    • Untuk setiap transaksi akan ditambahkan ke wallet jika berhasil dimining
    • Untuk setiap transaksi di Mempool yang identik dengan transaksi yang sudah berada di Block valid akan di hapus
    • Block akan disebarkan ke node-node lain
    • Jika Block di reject, maka block tersebut tidak dianggap sebagai bagian dari rantai block utama
  • Untuk kondisi (2) yang menjadi rantai block cabang, tidak akan dilakukan tindakan
  • Untuk kondisi (3), dimana rantai block cabang menjadi rantai block utama
    • Mencari fork block di rantai block utama, dimana terjadinya percabangan
    • Mendefinisikan ulang rantai block utama untuk diperluas hanya ke fork block ini
    • Untuk setiap block di rantai cabang, dari child of the fork block sampai ke ujungnya, ditambahkan ke rantai block utama
      • Lakukan pemeriksaan "cabang" sesuai prosedur "BLOCK" poin 3 s/d 11
      • Untuk semua transaksi kecuali coinbase, diterapkan :
        • Jika input menggunakan referenced output dari transaksi yang tidak dapat ditemukan di rantai block utama, maka akan di reject
        • Untuk setiap Input yang menggunakan "n" output dari transaksi sebelumnya, namun nilainya kurang dari "n+1" output, maka akan di reject
        • Untuk setiap Input yang menggunakan referenced output dari coinbase transaction, maka harus mendapatkan konfirmasi konfirmasi COINBASE_MATURITY (100) (jika tidak akan di reject)
        • Melakukan verifikasi crypto signatures untuk setiap input, jika tidak sesuai akan di reject
        • Untuk setiap input yang menggunakan referenced output yang sudah digunakan oleh transaksi lain yang berada di rantai block utama, maka akan di reject
        • Untuk setiap nilai Input beserta nilai totalnya harus berada dalam rentang nilai yang sudah ditentukan (lebih dari 0 dan kurang dari 21 Juta koin)
        • Jika jumlah nilai input lebih kecil dari jumlah nilai output, maka akan di reject
      • Jika nilai coinbase > nilai Block subsidy + transaction fee, maka akan di reject
      • (jika tidak di reject), maka :
      • Untuk setiap transaksi akan ditambahkan ke wallet jika berhasil dimining
    • Jika di reject, maka rantai block utama harus dibiarkan seperti semula
    • Untuk setiap block di rantai block utama (lama), dari child of the fork block sampai ke ujungnya, diterapkan :
      • Untuk setiap transaksi yang bukan merupakan coinbase transaction di Block, diterapkan :
        • Terapkan pemeriksaan sesuai prosedur "TX" poin 2 s/d 9 (Untuk poin ke-8 hanya dicari duplikat transaksi pada Mempool saja)
        • Jika diterima, ditambahkan ke transaction pool, jika tidak lanjutkan ke transaksi berikutnya
    • Untuk setiap block di rantai block utama (baru), dari child of the fork block sampai ke ujungnya, diterapkan :
      • Untuk setiap transaksi di Mempool yang identik dengan transaksi yang sudah berada di Block valid akan di hapus
    • Block akan disebarkan ke node-node lain
  • Untuk setiap orphan block yang merupakan prev block, terapkan semua prosedur (termasuk poin 19 ini) secara rekursif pada orphan block tersebut


Note
[1] Penggunaan Bitcoin (sebagai transaksi) yang dilakukan oleh orang lain tanpa ijin dan otorisasi dari pemilik. Dengan penerapan public-private key cryptography hal ini dapat dicegah
[2] Penggunaan reference output yang sama pada sebuah Input transaksi, namun digunakan pada 2 output (address penerima) yang berbeda
[3] nLockTime tidak boleh melebihi 31 bits
[4] Transaksi yang valid harus memiliki ukuran lebih dari atau sama dengan 100 bytes. Jika kurang transaksi dianggap tidak valid
[5] Jumlah signature operands didalam sebuah Signature pada transaksi standar tidak boleh lebih dari 2
[6] Rules ini mencegah potensi double-spending
[7] Ketika transaksi diterima (masuk) ke Mempool, akan dipastikan bahwa nilai coinbase > Block Subsidy + fee transaksi


*Reference Source https://en.bitcoin.it/wiki/Protocol_rules
Jump to: