20230315ReceiverPays合約代碼及相關理解

// SPDX-License-Identifier: GPL-3.0

pragma solidity >=0.7.0 <0.9.0;

contract ReceiverPays {

//定義當前支票的歸屬人默認權限為internal

? ? address owner = msg.sender;

? ? //定義了一個權限為internal 的mapping晦雨,key為用過的nonce,value為bool類型

? ? mapping(uint256 =>bool)usedNonces;

? ? /*

*/

? ? constructor() payable {

}

/*

? ? 定義了一個只供外部使用的函數(shù)暂幼,但是這個函數(shù)必須是從來沒有調(diào)用過的,通過nonce進行區(qū)分*/

? ? function claimPayment(uint256 amount,uint256 nonce,bytes memory signature)external {

require(!usedNonces[nonce]); //當前的nonce不能是已經(jīng)使用過的咙俩。

? ? ? ? usedNonces[nonce] =true;//將當前的nonce設置為true型奥,意思是已經(jīng)使用了

? ? ? ? bytes32 message = prefixed(keccak256(abi.encodePacked(msg.sender,amount,nonce,this)));

? ? ? ? require(recoverSigner(message,signature) == owner);

? ? }

/*

? ? 定義了一個只供外部調(diào)用的方法琐旁,銷毀當前合約*/

? ? function shutdown()external {

require(msg.sender == owner);//只有owner才能執(zhí)行該方法

? ? ? ? selfdestruct(payable(msg.sender));// 調(diào)用了自我銷毀的方法

? ? }

/*

? ? 定義了一個internal函數(shù),只能是當前合約以及當前合約的子合約中pure叮盘,不跟合約狀態(tài)變量做任何讀寫之類的交互秩贰, 返回值有三個, 在函數(shù)內(nèi)還有內(nèi)聯(lián)函數(shù)*/

? ? function splitSignature(bytes memory sig)internal pure returns (uint8 v,bytes32 r,bytes32 s){

require(sig.length ==65);

? ? ? ? assembly {

r := mload(add(sig,32))

s := mload(add(sig,64))

v :=byte(0,mload(add(sig,96)))

}

return (v, r, s);

? ? }

/*

? ? internal 表示當前函數(shù)智能當前合約或者當前合約的子合約可以使用柔吼, pure代表不跟合約的狀態(tài)變量做任何交互毒费,并且返回一個address

? ? 類型的數(shù)據(jù)*/

? ? function recoverSigner(bytes32 message,bytes memory sig)internal pure returns (address){

(uint8 v,bytes32 r,bytes32 s) = splitSignature(sig);

? ? ? ? return ecrecover(message,v,r,s);

? ? }

/*

? ? ? 定義一個內(nèi)部(子類合約也可以)使用的函數(shù),用于加密愈魏,并且當前函數(shù)為pure不跟任何狀態(tài)變量做交互觅玻。 返回一個bytes32 類型的數(shù)據(jù)*/

? ? function prefixed(bytes32 hash)internal pure returns(bytes32){

return keccak256(abi.encodePacked("\x19 Ethereum Signed Message:\n32",hash));

? ? }

}

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市培漏,隨后出現(xiàn)的幾起案子溪厘,更是在濱河造成了極大的恐慌,老刑警劉巖牌柄,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件畸悬,死亡現(xiàn)場離奇詭異,居然都是意外死亡珊佣,警方通過查閱死者的電腦和手機蹋宦,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來咒锻,“玉大人冷冗,你說我怎么就攤上這事』笸В” “怎么了蒿辙?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長敦捧。 經(jīng)常有香客問我须板,道長,這世上最難降的妖魔是什么兢卵? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮绪颖,結果婚禮上秽荤,老公的妹妹穿的比我還像新娘甜奄。我一直安慰自己,他們只是感情好窃款,可當我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布课兄。 她就那樣靜靜地躺著,像睡著了一般晨继。 火紅的嫁衣襯著肌膚如雪烟阐。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天紊扬,我揣著相機與錄音蜒茄,去河邊找鬼。 笑死餐屎,一個胖子當著我的面吹牛檀葛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播腹缩,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼屿聋,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了藏鹊?” 一聲冷哼從身側響起润讥,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎盘寡,沒想到半個月后象对,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡宴抚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年勒魔,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菇曲。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡冠绢,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出常潮,到底是詐尸還是另有隱情弟胀,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布喊式,位于F島的核電站孵户,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏岔留。R本人自食惡果不足惜夏哭,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望献联。 院中可真熱鬧竖配,春花似錦何址、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至胁镐,卻和暖如春偎血,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背盯漂。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工颇玷, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宠能。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓亚隙,卻偏偏與公主長得像,于是被迫代替她去往敵國和親违崇。 傳聞我的和親對象是個殘疾皇子阿弃,可洞房花燭夜當晚...
    茶點故事閱讀 42,877評論 2 345

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