區(qū)塊鏈?zhǔn)且粋€(gè)確定性的、封閉的系統(tǒng)環(huán)境,目前區(qū)塊鏈只能獲取到鏈內(nèi)的數(shù)據(jù),而不能獲取到鏈外真實(shí)世界的數(shù)據(jù),區(qū)塊鏈與現(xiàn)實(shí)世界是割裂的。 一般智能合約的執(zhí)行需要觸發(fā)條件,當(dāng)智能合約的觸發(fā)條件是外部信息時(shí)(鏈外),就必須需要預(yù)言機(jī)來提供數(shù)據(jù)服務(wù),通過預(yù)言機(jī)將現(xiàn)實(shí)世界的數(shù)據(jù)輸入到區(qū)塊鏈上,因?yàn)橹悄芎霞s不支持對外請求。
具體原因是:區(qū)塊鏈?zhǔn)谴_定性的環(huán)境,它不允許不確定的事情或因素,智能合約不管何時(shí)何地運(yùn)行都必須是一致的結(jié)果,所以虛擬機(jī)(VM)不能讓智能合約有 network call(網(wǎng)絡(luò)調(diào)用),不然結(jié)果就是不確定的。
也就是說智能合約不能進(jìn)行 I/O(Input/Output,即輸入/輸出),所以它是無法主動(dòng)獲取外部數(shù)據(jù)的,只能通過預(yù)言機(jī)將數(shù)據(jù)給到智能合約。