天豹,債權(quán)置3星評(píng)價(jià)
2020-11-03 15:03:21
其實(shí)我們可以這樣看待比特幣的交易:『交易的發(fā)起者懸賞若干比特幣,在網(wǎng)絡(luò)上貼出了一到數(shù)學(xué)題,誰解出了這道數(shù)學(xué)題,懸賞就歸誰了』。 順著這個(gè)思路,Alice對(duì)Bob的轉(zhuǎn)賬可以理解為『Alice把一道只有Bob才能解開的數(shù)學(xué)題發(fā)到網(wǎng)絡(luò)上,Bob解出題并拿走了懸賞』。那么,每個(gè)交易數(shù)據(jù)中都會(huì)出現(xiàn)的『腳本』就是題和解,『腳本語言』就是用來描述題和解的工具。
『輸入腳本』和『輸出腳本』
在這里我們先討論單輸入單輸出的比特幣交易,因?yàn)檫@樣描述起來更方便且不影響對(duì)『腳本』的理解。
這是一個(gè)單輸入單輸出交易,看下我們要關(guān)注的數(shù)據(jù):
前導(dǎo)輸入的Hash:
輸入腳本 scriptSig:
轉(zhuǎn)賬值:
0.05010000 btc
輸出腳本 scriptPubKey:
假設(shè)Alice是轉(zhuǎn)賬發(fā)送者,Bob是接受者。那么『輸入交易』表明了Alice要?jiǎng)佑玫谋忍貛诺膩碓矗狠敵鼋灰住槐砻髁薃lice要轉(zhuǎn)賬的數(shù)額和轉(zhuǎn)賬對(duì)象——Bob。那么,你可能要問,數(shù)據(jù)中的『輸入腳本』和『輸出腳本』是不是就是題和解?對(duì)了一半!
聽風(fēng),聞?dòng)辏?span>6星評(píng)價(jià)
0000-00-00 00:00:00
比特幣腳本是一個(gè)功能比較少的編程語言,滿足比特幣系統(tǒng)的正常運(yùn)行需求,同時(shí)最大化保證了安全性。
比特幣腳本是圖令不完備的。所謂圖靈不完備意思就是缺少當(dāng)代語言所必須的一些功能,例如循環(huán)。但是,功能的有限也最大化的減小了系統(tǒng)的受攻擊面積,例如,可以防止有人利用無線循環(huán)來給系統(tǒng)安一個(gè)炸彈。
比特幣腳本是一種基于棧的語言??梢园褩O胂蟪啥询B到一起的幾本書,push 操作相當(dāng)于添加一本書,pop 操作相當(dāng)于抽出一本書。每次執(zhí)行的都是最頂部的操作,每個(gè)操作都對(duì)應(yīng)一個(gè)操作碼,簡稱 opcode 。
總之,比特幣腳本是一個(gè)圖靈不完備的基于棧的語言。