交易是如何被創(chuàng)建和打包的5

上節(jié)介紹完交易是如何錢包里面進行選幣的苦囱,這次我們來看下如何對交易進行簽名。這節(jié)可能會長脾猛,這次盡量寫完撕彤。

接著上文我們知道,一筆交易的創(chuàng)建是需要進行vin的填充和vout的構(gòu)造的猛拴。當我們操作完畢后羹铅,我要對自己的交易里面的交易輸入進行簽名操作蚀狰,以證明該交易輸入填充進的交易輸出是你的,你具有支配權(quán)职员。

循環(huán)遍歷交易對象里面的所有的vin,并對其進行簽名操作麻蹋。nIn變量,表示你由幾個交易輸入的索引廉邑。從這里就這個看到哥蔚,你需要填充該筆交易的交易輸入有幾個。

從之前的講解我們知道蛛蒙,交易的構(gòu)建糙箍。這里不再贅述。

這個就是交易的簽名函數(shù)牵祟,第三個參數(shù)就是用來接收簽名信息的深夯。

從注釋可以知道,這是一個創(chuàng)建簽名的類诺苹,里面有一個純虛函數(shù)咕晋。

有類繼承于它,我們就是用的這個類收奔,進行對象的構(gòu)造掌呜。

構(gòu)造的函數(shù)的實現(xiàn),也很簡單坪哄,我就不粘貼圖了质蕉,大家自己去看下吧。就是一些賦值操作而已翩肌。

現(xiàn)在開始介紹簽名函數(shù)模暗。ProduceSignature();

txnouttype whichType;用來接收交易類型的對象。這個大家可以可以參照精通比特幣書籍去查找念祭,在這不在贅述兑宇。

SignStep();函數(shù)就是對交易進行簽名操作的第一步。

如果交易類型是TX_SCRIPTHASH(當時腳本哈希時粱坤,scriptSig是救贖腳本隶糕,還需在解析一次,最后還要把子腳本的下標序列化進簽名)站玄,看到枚驻,if里面又做了一次賦值操作的。

做完這些之后蜒什,就是測試解测秸。VerifyScript();函數(shù),這個先放一下,先把簽名搞完霎冯。

來看這個SignStep()函數(shù)铃拇。

先把用來接收簽名的信息的對象進行清空操作。然后調(diào)用Sovler()沈撞;進行求解操作慷荔,主要是接觸上一筆交易的交易類型和解信息。這個順帶說一下缠俺,這個解信息用處很大显晶,用來就可以做地址索引了。一個地址接收和花費的金額壹士,都可以用它來做磷雇,來看下這個函數(shù)。(這個函數(shù)一次粘不全躏救,一點一點進行講解)

CKeyID keyID;這個類繼承于uint160哈希唯笙,就是用來表示20個字節(jié)的地址的。

首先是一個向量模板對象盒使,如果該向是空的崩掘,就對它進行賦值操作,有三種格式少办。然后清空用來接收解的對象苞慢。

注釋一些,不在解釋英妓。

然后遍歷模板對象里面的腳本操作符挽放,然后根據(jù)相應(yīng)的腳本操作符進行賦值操作,有條件的建議自己去追蹤一下交易鞋拟,這樣印象就更加深刻骂维。如果這個都沒解出惹资,解為空贺纲,交易類型就是TX_NONSTANDARD類型。(圖不清晰的話褪测,大家自己去看下源碼猴誊,沒辦法啊)

然后就是根據(jù)你解出的交易類型,進行switch侮措,對號入座操作了懈叹。公鑰和空,非標準的就不解讀了分扎。

剩下的就是公鑰哈希類型澄成,腳本哈希和多重簽名了。我們挑一個最常見的公鑰哈希來講。

首先進行賦值操作墨状,先把地址拿到卫漫,然后調(diào)用signl()函數(shù)進行簽名,然后根據(jù)地址找對應(yīng)的私鑰對象肾砂,再由該私鑰對象獲取一個公鑰列赎,最后把公鑰序列化進簽名信息,不知道大家發(fā)現(xiàn)過沒有镐确。

標注的就是簽名信息包吝,這個由一部分是可以找到序列化的公鑰的。

解析十六進制的序列化腳本就可以看到的源葫,也間接的證明诗越,我的解釋是正確的。

下面直接看signl();

又回到開篇的第二個類上面了息堂,沒錯掺喻,就是由它進行創(chuàng)建的簽名的。函數(shù)調(diào)用成功后在賦值給我們一直傳遞的對象储矩,接著往下看創(chuàng)建函數(shù)感耙。因為是純虛函數(shù),這里就直接寫子類的實現(xiàn)函數(shù)了持隧。

由沒有很熟悉啊即硼,這里就是菜神給我們講過的公鑰和私鑰的生成部分,所有的簽名都是私鑰生成的屡拨。哈哈只酥,寫的差不多了,就不寫腳本檢測的那一塊了呀狼,留著下節(jié)寫啦裂允。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市哥艇,隨后出現(xiàn)的幾起案子绝编,更是在濱河造成了極大的恐慌,老刑警劉巖貌踏,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件十饥,死亡現(xiàn)場離奇詭異,居然都是意外死亡祖乳,警方通過查閱死者的電腦和手機逗堵,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來眷昆,“玉大人蜒秤,你說我怎么就攤上這事汁咏。” “怎么了作媚?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵梆暖,是天一觀的道長。 經(jīng)常有香客問我掂骏,道長轰驳,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任弟灼,我火速辦了婚禮级解,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘田绑。我一直安慰自己勤哗,他們只是感情好,可當我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布掩驱。 她就那樣靜靜地躺著芒划,像睡著了一般。 火紅的嫁衣襯著肌膚如雪欧穴。 梳的紋絲不亂的頭發(fā)上民逼,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天,我揣著相機與錄音涮帘,去河邊找鬼拼苍。 笑死,一個胖子當著我的面吹牛调缨,可吹牛的內(nèi)容都是我干的疮鲫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼弦叶,長吁一口氣:“原來是場噩夢啊……” “哼俊犯!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起伤哺,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤燕侠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后默责,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體贬循,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡咸包,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年桃序,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片烂瘫。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡媒熊,死狀恐怖奇适,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情芦鳍,我是刑警寧澤嚷往,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站柠衅,受9級特大地震影響皮仁,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菲宴,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一贷祈、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧喝峦,春花似錦势誊、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至眉踱,卻和暖如春挤忙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背谈喳。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工饭玲, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人叁执。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓茄厘,卻偏偏與公主長得像,于是被迫代替她去往敵國和親谈宛。 傳聞我的和親對象是個殘疾皇子次哈,可洞房花燭夜當晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 欠你一個擁抱
    你說我懂閱讀 170評論 0 0
  • 圖&文|半山煙雨 看到一棵繁花滿枝的樹,只會贊嘆吆录,倘若延綿數(shù)里的繁花展現(xiàn)窑滞,剩下的唯有驚艷了』煮荩花開花落又一年哀卫,每年的...
    半山煙雨閱讀 635評論 3 5
  • 【知-學(xué)習(xí)】 1.《增廣賢文全集》誦讀5分鐘。 2.《六項精進》大綱誦讀1遍撬槽。 【經(jīng)典名句分享】 只有十年如一日把...
    玉_蓮子閱讀 137評論 0 0