題記
? ? ? ? 演示如何編寫solidity智能合約,以及在remix中運(yùn)行solidity代碼。
準(zhǔn)備Remix環(huán)境
? ? ? ? 在瀏覽器中搜索remix,找到remix官網(wǎng),并打開(kāi)
? ? ? ? 由于是國(guó)內(nèi)網(wǎng)絡(luò),所以訪問(wèn)國(guó)外網(wǎng)站較慢,可以耐心等待加載完成,或者科學(xué)上網(wǎng)。?
? ? ? ? 加載完成是這樣:?
?
編寫 app.sol文件
????????app.sol智能合約可以部署到以太坊網(wǎng)絡(luò)上,然后通過(guò)調(diào)用?setName
?函數(shù)來(lái)設(shè)置名字,再通過(guò)調(diào)用?getName
?函數(shù)來(lái)獲取名字。?
// SPDX-License-Identifier: MIT
//指定 Solidity 的版本號(hào),表示該智能合約是用 Solidity 0.8.0 版本編寫的
pragma solidity ^0.8.0;//定義一個(gè)名為 NameContract 的合約
contract NameContract {
? ? //定義一個(gè)私有變量 name,它的值是一個(gè)字符串類型。
? ? string private name;? ? //定義一個(gè) Solidity 函數(shù),名為 setName,它是一個(gè)公共函數(shù),可以被其他合約或外部賬戶調(diào)用。
? ? //該函數(shù)有一個(gè)參數(shù) _name,類型為 string memory,表示要設(shè)置的名字。
? ? //memory 關(guān)鍵字表示該參數(shù)的值將被存儲(chǔ)在內(nèi)存中,而不是存儲(chǔ)在合約的狀態(tài)變量中。
? ? function setName(string memory _name) public {
? ? ? ? name = _name;
? ? }? ? //定義一個(gè) Solidity 函數(shù),名為 getName,它是一個(gè)公共視圖函數(shù)(view function),
? ? //該函數(shù)不會(huì)修改合約的狀態(tài)變量,只讀取合約的狀態(tài)變量并返回結(jié)果。
? ? //該函數(shù)沒(méi)有參數(shù),返回值類型為 string memory,表示返回的名字。
? ? //函數(shù)體中的語(yǔ)句 return name; 表示返回合約的狀態(tài)變量 name 的值作為函數(shù)的返回值。
? ? //因?yàn)檫@是一個(gè)視圖函數(shù),所以不需要使用 memory 或 storage 關(guān)鍵字來(lái)指定返回值的存儲(chǔ)位置。
? ? function getName() public view returns (string memory) {
? ? ? ? return name;
? ? }
}
?
// SPDX-License-Identifier: MIT
//指定 Solidity 的版本號(hào),表示該智能合約是用 Solidity 0.8.0 版本編寫的
pragma solidity ^0.8.0;
//定義一個(gè)名為 NameContract 的合約
contract NameContract {
//定義一個(gè)私有變量 name,它的值是一個(gè)字符串類型。
string private name;
//定義一個(gè) Solidity 函數(shù),名為 setName,它是一個(gè)公共函數(shù),可以被其他合約或外部賬戶調(diào)用。
//該函數(shù)有一個(gè)參數(shù) _name,類型為 string memory,表示要設(shè)置的名字。
//memory 關(guān)鍵字表示該參數(shù)的值將被存儲(chǔ)在內(nèi)存中,而不是存儲(chǔ)在合約的狀態(tài)變量中。
function setName(string memory _name) public {
name = _name;
}
//定義一個(gè) Solidity 函數(shù),名為 getName,它是一個(gè)公共視圖函數(shù)(view function),
//該函數(shù)不會(huì)修改合約的狀態(tài)變量,只讀取合約的狀態(tài)變量并返回結(jié)果。
//該函數(shù)沒(méi)有參數(shù),返回值類型為 string memory,表示返回的名字。
//函數(shù)體中的語(yǔ)句 return name; 表示返回合約的狀態(tài)變量 name 的值作為函數(shù)的返回值。
//因?yàn)檫@是一個(gè)視圖函數(shù),所以不需要使用 memory 或 storage 關(guān)鍵字來(lái)指定返回值的存儲(chǔ)位置。
function getName() public view returns (string memory) {
return name;
}
}
在remix中運(yùn)行solidity代碼?
?編譯智能合約
?選擇正確的solidity版本
?
編譯成功展示圖?
?部署智能合約
? ? ? ? ?選擇運(yùn)行智能合約的環(huán)境(remix虛擬環(huán)境,ganache,本地geth),再點(diǎn)擊編譯。
?
編譯完成展示圖?
?
?使用合約中的setName方法
? ? ? ? 右側(cè)是交易信息
?文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-779095.html
使用合約中的getName方法?
?后記
? ? ? ? 覺(jué)得有用可以點(diǎn)贊或收藏!?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-779095.html
到了這里,關(guān)于2.DApp-編寫和運(yùn)行solidity智能合約的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!