سأحاول إعطاء تفصيل أكثر دقة للمعاملة p2pkh كما سأحاول مستقبلا إعطاء شرح مفصل لكل أنواع المعاملات المتبقية إن شاء الله في هذا الخيط.
معاملة p2pkh هي نوع من المعاملات التي يقوم بها معظم الأشخاص عن نقل كمية محددة من البتكوين من عنوان إلى عنوان أخر عادة عبر واجهة المحفظة. مثال لتوضيح جزء من ما يجري خلف العملية في محفظة عادية بوضوح:
- مخرجات المعاملات الغير المنفقة (utxos) و هي إختصار unspent transaction outputs
- عملية بناء المعاملات (transaction building process)
مخرجات المعاملات الغير المنفقة :
من المفاهيم المهمة التي يجب فهمها قبل الإنخراط في تفصيل المعاملة ، مفهوم ناتج المعاملة غير المنفقة أو ما يعبر عنه utxo في معاملة بتكوين و utxos هو ما يتم إستهلاكه بعد إنفاقه تتم الإشارة إليه على أنه ناتج المعاملة المستهلكة (spent transaction output) . إنفاق (utxo) يشبه أخذ ورقة بقيمة عشرون دولار لشراء شيء مقابل عشر دولارات، لكن بدلا أن يحتفظ أمين الصندوق بورقة عشرون دولار يقوم بصرفها إلى ورقتين جديدتين بقيمة عشر دولار يحتفظ بواحدة و يقوم بإرجاع الأخرى في هذا السياق بدأت ورقة المقسمة بقيمة عشرون دولار بإعتبارها utxo لكن بمجرد إستهلاكها أصبح ناتج المعاملة المستنفذ الذي أنتج ورقتين جديدتين بقيمة عشر دولار يمثلان utxos جديدتين جاهزتين للإنفاق في المعاملات المستقبلية. يشار إلى جميع بتكوينات المتاحة للإستهلاك على الشبكة بإسم مجموعة utxo.
عملية بناء المعاملات:
تتكون كل معاملة من رقم الإصدار على المدخلات (input) و المخرجات (output) و وقت الإغلاق (locktime)
تحتوي المدخلات على نقطة أو نقاط (output(s))و رقم تسلسل و برنامج نصي للإلغاء القفل و يطلق عليه (scriptsig).
تحتوي المخرجات على قيمة المبلغ الذي يتم إنفاقه و البرنامج النصي للتأمين و يشار إليه أيضا بإسم (scriptpubkey)
وقت الإغلاق يدل على أي وقت تصبح فيه المعاملة سارية.
تحتوي كل معاملة على إدخال واحد على الأقل و إخراج واحد تحتوي المدخلات على منطق يخبر الشبكة عن utxos الذي يستهلكها عبر النقاط الخارجية و يثبت أنه يسمح بإستهلاكها عبر البرامج النصية لإلغاء القفل (unlock scripts)
"ver":1,
"inputs":[
{
"sequence":4294967295,
"witness":"",
"prev_out":{
"spent":true,
"spending_outpoints":[
{
"tx_index":358792423,
"n":0
}
],
"tx_index":358712145,
"type":0,
"addr":"19iy8HKpG5EbsqB2GUNVPUDbQxiTrPXpsx",
"value":17373066,
"n":1,
"script":"76a9145fb0e9755a3424efd2ba0587d20b1e98ee29814a88ac"
},
"script":"47304402203da9d487be5302a6d69e02a861acff1da472885e43d7528ed9b1b537a8e2cac9022002d1bca03a1e9715a99971bafe3b1852b7a4f0168281cbd27a220380a01b3307012102c9950c622494c2e9ff5a003e33b690fe4832477d32c2d256c67eab8bf613b34e"
}
],
"weight":900,
"block_height":530805,
"relayed_by":"127.0.0.1",
"out":[
{
"spent":true,
"spending_outpoints":[
{
"tx_index":361316823,
"n":2
}
],
"tx_index":358792423,
"type":0,
"addr":"1JKRgG4F7k1b7PbAhQ7heEuV5aTJDpK9TS",
"value":390582,
"n":0,
"script":"76a914bdf63990d6dc33d705b756e13dd135466c06b3b588ac"
},
{
"spent":true,
"spending_outpoints":[
{
"tx_index":358801270,
"n":0
}
],
"tx_index":358792423,
"type":0,
"addr":"19iy8HKpG5EbsqB2GUNVPUDbQxiTrPXpsx",
"value":16932484,
"n":1,
"script":"76a9145fb0e9755a3424efd2ba0587d20b1e98ee29814a88ac"
}
],
"lock_time":0,
"size":225,
"double_spend":false,
"block_index":1709565,
"time":1530924843,
"tx_index":358792423,
"vin_sz":1,
"hash":"e65ad475a01384b086ce0d04199835fdd580739422ece1e0f1c4e362d43735d9",
"vout_sz":2
}
تحتوي المخرجات على منطق يخبر الشبكة بالشروط التي يسمح فيها للمعاملة المستقبلية بالإستهلاك utxos التي تم إنشاؤها حديثا عبر البرامج النصية للتأمين. ويهدف الشكل أدناه إلى توضيح العلاقة بين المعاملة المؤكدة و النواتج المستهلكة و المعاملات المؤكدة ذات النواتج الغير المنفقة و المعاملات الغير مرسلة:
المصدر