Files
build_notes_simengweb/assets/index.html-9ZeCOgBb.js
2025-11-02 20:25:31 +08:00

13 lines
9.0 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import{_ as s,c as e,a,o as l}from"./app-CsTq_I9B.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>&amp;&amp;</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>&lt;=</code>,<code>&lt;</code>,<code>&gt;=</code>,<code>&gt;</code></li><li>位运算符:<code>&amp;</code>(按位与)、<code>|</code>(按位或)、<code>^</code>(按位异或)、<code>~</code>(按位取反)</li><li>移位运算符:<code>&lt;&lt;</code>(左移)、<code>&gt;&gt;</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;"> &quot;filename.sol&quot;</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;"> &quot;filename.sol&quot;</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 &quot;filename&quot;;</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};