13 lines
9.0 KiB
JavaScript
13 lines
9.0 KiB
JavaScript
import{_ as s,c as e,a,o as l}from"./app-D5W2ova4.js";const d={};function n(t,i){return l(),e("div",null,[...i[0]||(i[0]=[a(`<h2 id="solidity-文件基础框架" tabindex="-1"><a class="header-anchor" href="#solidity-文件基础框架"><span>Solidity 文件基础框架</span></a></h2><p>Solidity 文件的基础框架通常包含以下几个部分:</p><ol><li><strong>SPDX 许可证标识符 (SPDX License Identifier)</strong>:为了避免法律问题和明确智能合约的开源许可证,建议在合约的开头添加 SPDX 许可证标识符。</li><li><strong>Solidity 版本声明 (Pragma)</strong>:这会告诉编译器您希望使用哪个版本的 Solidity 来编译您的代码。</li><li><strong>ABI编码编译指示</strong>:通过<code>pragma abicoder v1</code>或<code>pragma abicoder v2</code>来指定ABI编码版本。</li><li><strong>合约定义 (Contract Definition)</strong>:这是您编写智能合约代码的主体部分。</li></ol><p>下面是一个基础的 Solidity 文件框架示例,您可以直接使用:</p><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-solidity"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// SPDX-License-Identifier: MIT</span></span>
|
||
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">pragma</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> solidity</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> ^0.8.20</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
|
||
<span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">pragma</span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;"> experimental</span><span style="--shiki-light:#A65E2B;--shiki-dark:#C99076;"> ABIEncoderV2</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#AB5959;--shiki-dark:#CB7676;">contract</span><span style="--shiki-light:#2E8F82;--shiki-dark:#5DA994;"> MyContract</span><span style="--shiki-light:#999999;--shiki-dark:#666666;"> {</span></span>
|
||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;"> // 在这里编写您的合约代码</span></span>
|
||
<span class="line"><span style="--shiki-light:#999999;--shiki-dark:#666666;">}</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div><h2 id="solidity-基础数据类型" tabindex="-1"><a class="header-anchor" href="#solidity-基础数据类型"><span>Solidity 基础数据类型</span></a></h2><ul><li>布尔类型(bool):值为 <code>true</code> 和 <code>false</code><ul><li>运算符:<code>!</code>(逻辑非)、<code>&&</code>(逻辑与)、<code>||</code>(逻辑或)、<code>==</code>(等于)、<code>!=</code>(不等于)</li></ul></li><li>整形(int/uint): <ul><li>有符号整数(int):可以表示负数和零。</li><li>无符号整数(uint):只能表示非负数。</li><li>整数类型可以是8位、16位、32位、64位或256位。(只要是八的倍数都可以)</li><li>例如:<code>int8</code>、<code>uint256</code>等。</li><li>运算符: <ul><li>比较运算符:<code><=</code>,<code><</code>,<code>>=</code>,<code>></code></li><li>位运算符:<code>&</code>(按位与)、<code>|</code>(按位或)、<code>^</code>(按位异或)、<code>~</code>(按位取反)</li><li>移位运算符:<code><<</code>(左移)、<code>>></code>(右移)</li><li>算数运算符:<code>+</code>(加法)、<code>-</code>(减法)、<code>*</code>(乘法)、<code>/</code>(除法)、<code>%</code>(取余)</li><li>对于一个整数类型<code>X</code>,可以使用<code>type(X).min</code>和<code>type(X).max</code>来获取其最小值和最大值。</li></ul></li></ul></li></ul><h2 id="solidity-基础语法结构" tabindex="-1"><a class="header-anchor" href="#solidity-基础语法结构"><span>Solidity 基础语法结构</span></a></h2><h2 id="solidity-基础操作" tabindex="-1"><a class="header-anchor" href="#solidity-基础操作"><span>Solidity 基础操作</span></a></h2><h3 id="导入其他源文件" tabindex="-1"><a class="header-anchor" href="#导入其他源文件"><span>导入其他源文件</span></a></h3><p>Solidity 支持导入其他源文件,使用<code>import</code>语句。例如:</p><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-solidity"><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">import</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> "filename.sol"</span><span style="--shiki-light:#999999;--shiki-dark:#666666;">;</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>这将导入<code>filename.sol</code>文件中的合约代码。</p><p>还可以创建一个新的全局符号</p><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-solidity"><span class="line"><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">import</span><span style="--shiki-light:#393A34;--shiki-dark:#DBD7CAEE;"> * as NewName </span><span style="--shiki-light:#1E754F;--shiki-dark:#4D9375;">from</span><span style="--shiki-light:#B56959;--shiki-dark:#C98A7D;"> "filename.sol"</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div></div></div><p>这将创建一个新的全局符号<code>NewName</code>,您可以在合约中使用它来引用<code>filename.sol</code>文件中的合约,例如<code>NewName.ContractName</code>。</p><p>还可以在导入的同时重命名符号:<code>import {symbol1 as alias, symbol2} from "filename";</code></p><h3 id="注释" tabindex="-1"><a class="header-anchor" href="#注释"><span>注释</span></a></h3><p>Solidity 支持两种类型的注释:</p><ol><li><strong>行注释</strong>:使用<code>//</code>来注释单行代码。</li><li><strong>块注释</strong>:使用<code>/*</code>和<code>*/</code>来注释多行代码。</li></ol><p>例如:</p><div class="language-solidity line-numbers-mode" data-highlighter="shiki" data-ext="solidity" style="--shiki-light:#393a34;--shiki-dark:#dbd7caee;--shiki-light-bg:#ffffff;--shiki-dark-bg:#121212;"><pre class="shiki shiki-themes vitesse-light vitesse-dark vp-code"><code class="language-solidity"><span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">// 这是一个行注释</span></span>
|
||
<span class="line"></span>
|
||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">/*</span></span>
|
||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">这是一个</span></span>
|
||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">块注释</span></span>
|
||
<span class="line"><span style="--shiki-light:#A0ADA0;--shiki-dark:#758575DD;">*/</span></span></code></pre><div class="line-numbers" aria-hidden="true" style="counter-reset:line-number 0;"><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div><div class="line-number"></div></div></div>`,22)])])}const c=s(d,[["render",n]]),r=JSON.parse('{"path":"/programming/solidity/basic-syntax/","title":"Solidity 基础语法与数据类型","lang":"zh-CN","frontmatter":{"title":"Solidity 基础语法与数据类型","createTime":"2025/09/22 10:30:00","permalink":"/programming/solidity/basic-syntax/"},"readingTime":{"minutes":2,"words":600},"git":{"createdTime":1759059454000,"updatedTime":1760064875000,"contributors":[{"name":"si-meng-spec","username":"si-meng-spec","email":"simeng@simengweb.com","commits":1,"avatar":"https://avatars.githubusercontent.com/si-meng-spec?v=4","url":"https://github.com/si-meng-spec"},{"name":"祀梦","username":"","email":"3501646051@qq.com","commits":1,"avatar":"https://gravatar.com/avatar/6406a81eeddc359cf3d3ce018797689fc6d014ff06215c27d0210b42e8f5a8ab?d=retro"}]},"filePathRelative":"notes/programming/solidity/basic-syntax.md","headers":[]}');export{c as comp,r as data};
|