Solidity, the Smart Contract Programming Language
Go to file
Paul Wackerow 11be2f4881
Squashed commit of the following: (#14401)
commit 6f38009a31b2ff5d6f53de7b74469f495fe04092
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 15:36:03 2023 -0700

    remove default sphinx footer

commit 0d842749566f40fa8c2dd434fa67bcc5e9df3aa0
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 15:21:26 2023 -0700

    linting

commit c8484ac7c1f54067b0d3c4aa4aa81de7d36df71d
Merge: 8339800d0 b583e9e64
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 14:15:03 2023 -0700

    Merge branch 'develop' into docs-rebrand

commit 8339800d0fdd197f589337e1198867d4198a3850
Merge: 633c673c5 88d5e06d4
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 14:11:58 2023 -0700

    Merge branch 'rebrand' into docs-rebrand

commit 88d5e06d4ce79696b9451991b33834ecc55bf66d
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 14:11:52 2023 -0700

    remove dev code

commit 633c673c5e227009917d888e1f0991f33aa75f44
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 14:02:25 2023 -0700

    update home url poitner to production domain

commit b3689cb7c230e1fb3a97400e5412ec14c34fc586
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 13:59:34 2023 -0700

    fix external link arrow to match core site

commit b7a28a5dfe7517a88870afe67783e9e300b85af4
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 13:59:19 2023 -0700

    swap in cdnfonts for overpass fonts

commit e979ad5c9f69c9c7ee369a0700a64ea6d9061c2b
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 10 08:30:48 2023 -0700

    fix external link arrow spacing/underline

commit b90077863cfff5d8776f5dc74f82f061e0162d37
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jul 6 16:26:28 2023 -0700

    update foot note

commit ed9ddfd327cd0e382286abf0c8896c7c879512b2
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jul 6 13:12:14 2023 -0700

    update nav link hover color

commit 077d3a0c9333c96cbabc3ce2bccf00afac19a312
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Tue Jul 4 20:27:05 2023 -0700

    bug fixed for header/nav-link styling

commit 2584dd2e419255ec93430446bd049ff90155987e
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Tue Jul 4 12:15:09 2023 -0700

    fix link shift bug

commit 885d2bc52ca3ed9e4727d7f0eaed0e312fedaaaa
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Tue Jul 4 12:13:03 2023 -0700

    update nav link hover styling

commit d06c81592ad88ad2e81701cec9e85b6a3cee86ee
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 3 18:25:37 2023 -0700

    extract event listener functions

commit 414e444ee67fe937d1295b14ac8591a710bfbdff
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jul 3 18:22:08 2023 -0700

    a11y: skip to content link

commit 6c628ea73995dad9b9a6fb502bb216d88f0e9602
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 21:57:24 2023 -0700

    fine-tuning more styling

commit 71b617abaf27c34fcecaf6e30795687abf9885f7
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 21:37:02 2023 -0700

    fix primary link color

commit d90627418c605bff4398a9e24ae0c5c685f73992
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 21:21:30 2023 -0700

    fix mobile versions expansion

commit f0f0fbbcb74ea35efa6e4cf87ab1d855f1ae2bd2
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 21:21:16 2023 -0700

    update code styling

commit 727c7ee9b69427eddd73012a89e6ee9ae1ccec8d
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 21:20:38 2023 -0700

    remix link styling

commit 4059c00e3d704002ef34f85fd86495f2a4ac9e57
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 21:19:49 2023 -0700

    fix whitespace styling

commit 631e2910a53484b97770cad1b3439d412a0ab6d0
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 20:33:54 2023 -0700

    fix search input styling

commit 5e06b22a7200b0774bd135c666b4e3437d342350
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 19:37:19 2023 -0700

    css adjustments

commit 637d5122038fd6075cd53d57537d728b730acbcf
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 19:15:05 2023 -0700

    selector adjustments, linting

commit 781dc7c3009dc406b36cd2bdcb2d02c3c34fafa6
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 18:26:09 2023 -0700

    top version/search layout adjustments

commit 7341e17003700133659e5f64ee2d1369ac50e434
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jul 2 18:18:21 2023 -0700

    update version div styling

commit 3a4b3feb581b1799e48d395b73aca05760dc5658
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sat Jul 1 21:18:12 2023 -0700

    restyle external link arrow for forum link

commit e6cef6312ca73c125c01b78573f21c75fcbbfc87
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sat Jul 1 20:50:31 2023 -0700

    add woff2 fonts, use absolute font urls

commit 3bc401b1dbe971501826011a692c38ee9ce4b992
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sat Jul 1 15:15:26 2023 -0700

    fix nav button alignment

commit b7d607b7090e1ac6ded55ac6e534549609226236
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 30 19:02:24 2023 -0700

    rename pcm param to color

commit d67e23539f720250bb298c11fd2b1b6d7dbb0815
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 30 17:34:56 2023 -0700

    center align footer buttons, fix bug on pre text

commit 34a665038dc27e2b8874b3e16ffc581c33f31bc5
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 29 16:40:26 2023 -0700

    preload fonts

commit 5b987c31455ffe02135e357ea560bbad8a9c6745
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 29 15:31:41 2023 -0700

    antialiased font smoothing

commit 9585fb5bb73f67e37a4f9f1da83e7b133f0b4446
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 29 13:44:51 2023 -0700

    search results styling

commit 224ed028b181b3944d2f2e33f4122b15f38f7608
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 29 13:29:09 2023 -0700

    restore search functionality

commit ec5782a01cd0f1c1808b353560c39911c9fdc645
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Wed Jun 28 21:55:11 2023 -0700

    more mobile menu and styling fixes

commit c033f05e2ab839309e7d3864ae66c465d801e806
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Wed Jun 28 13:14:22 2023 -0700

    patch location cleaner

commit 6cae3b5ad67e38f6decfa18eeacce973783a2fc1
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Tue Jun 27 17:49:28 2023 -0700

    patch location cleaner

commit e86e6a11189ed57f122382c901fe7a0f49518e83
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Tue Jun 27 17:40:11 2023 -0700

    color mode continuity

commit c3ba4ee6c614fa637a34eacbae60c5e88cd018c5
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Tue Jun 27 15:32:11 2023 -0700

    refactor layout

commit ac3bae8f34ccbd08f68cb784b3ec00bad70a9281
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jun 26 14:35:00 2023 -0700

    color and styling updates

commit 42e301818d3d11152c5ce630c8085db1c1664a13
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jun 26 13:23:03 2023 -0700

    highlight active nav link

commit fb72573c01494486ab9b0942c3f67c372af0d5e6
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jun 26 12:34:25 2023 -0700

    patch mobile menu bottom scroll stop

commit 2dcef754301d35143ea24ca197906c974e128a25
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Mon Jun 26 12:32:38 2023 -0700

    adjust header icon sizes

commit dc75b636b7f442dfe7aaa80ad82470be0f3d4f19
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jun 25 21:41:18 2023 -0700

    fix header icon sizes

commit de70f1a56eba85c89c1f01f37770b1d6bd91d5db
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sun Jun 25 19:58:18 2023 -0700

    mobile meun debugging

commit 1fe20565a838c2f2212cd95045cd309b076c8b2b
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sat Jun 24 13:21:23 2023 -0700

    icon color mode improvements

commit fcb134a4209371277693e919fb06eaeb53e36cb6
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sat Jun 24 11:51:24 2023 -0700

    initialize with menu closed

commit defa7c78e981037409ec9d2b9ab871910023f5b0
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Sat Jun 24 11:37:47 2023 -0700

    color toggle and mobile menu

commit 695d719612be0ed9cac0f246f0eaf91f3fdb2e75
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 23 16:39:32 2023 -0700

    forum url as external link

commit ad182602095909d84331339993b31f2a37bf1cd7
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 23 16:28:14 2023 -0700

    patch contributing path

commit fbfeaa7a12a1b9bc86b766a0e490b85d2ded8849
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 23 16:20:57 2023 -0700

    update contribute path

commit f7dbf1f2e0a3e31d164d6cc67c952f89c3f8f49e
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 23 16:05:22 2023 -0700

    dev: point to vercel build for new solidity site

commit c344c1df86e78ad6ab9bc066ac75659180d068cf
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 23 14:30:40 2023 -0700

    update stylesheets, constants, logos

commit c15135378c8568ed93bf685552940cdbe1c07b70
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Fri Jun 23 10:25:05 2023 -0700

    bg color cleanup

commit c049df77d9d55adc796bc2f8cd7c186d833aca69
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 22 19:02:49 2023 -0700

    clean up initialize and toggle scripts

    deprecate dark.css in lieu of a dark more html attribute indicator and css selectors for this attribute. Avoids needing to enable/disable dark stylesheet

commit 881c9cce66e18d30b50c467a22d98836698f5b58
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 22 18:59:24 2023 -0700

    import type faces

commit e9b26157aabf4374754cf14d9a4a980c92bd139c
Author: Paul Wackerow <54227730+wackerow@users.noreply.github.com>
Date:   Thu Jun 22 15:39:00 2023 -0700

    implement initial styling adjustments
2023-07-14 19:31:06 +01:00
.circleci CI: Workaround for some test cases crashing the compiler via IR during bytecode comparison due to a regex-related bug 2023-07-14 15:28:11 +02:00
.github Remove token requirement from external contributor greeter 2023-07-10 16:26:18 +02:00
cmake Fix incorrectly CMAKE_BINARY_DIR usage 2023-06-10 00:35:24 +08:00
docs Squashed commit of the following: (#14401) 2023-07-14 19:31:06 +01:00
libevmasm Purge using namespace std 2023-07-10 13:12:46 +02:00
liblangutil Purge using namespace std from liblangutil 2023-07-12 11:24:21 +02:00
libsmtutil Purge using namespace std in libsmtutil and libsolc 2023-07-12 14:09:19 +02:00
libsolc Purge using namespace std in libsmtutil and libsolc 2023-07-12 14:09:19 +02:00
libsolidity IRGeneratorForStatements: Small refactor in endVisit(IndexAccess) for readability 2023-07-13 11:07:40 +02:00
libsolutil Fix incorrect CMAKE_SOURCE_DIR usage 2023-06-08 19:17:34 +08:00
libstdlib Fix incorrectly CMAKE_BINARY_DIR usage 2023-06-10 00:35:24 +08:00
libyul Remove ReasoningBasedSimplifier from libyul 2023-06-28 14:38:36 +02:00
scripts prepare_report: Add YulException to the list of ICEs for which we ignore Standard JSON outputs even when present 2023-07-14 15:28:11 +02:00
snap Snap: update z3 2021-10-06 18:00:07 -06:00
solc Add --print-smt flag to output SMTChecker SMTLIB code 2023-06-16 14:04:07 +02:00
test prepare_report: Add viaIR presets 2023-07-14 15:28:11 +02:00
tools Misspelling and terms inconsistencies (#14280) 2023-05-30 20:49:25 +01:00
.clang-format [.clang-format ] Update prohibited property 'AlignEscapedNewlinesLeft'. 2023-04-12 11:44:23 -05:00
.dockerignore adds .dockerignore file 2018-06-26 12:21:04 +02:00
.editorconfig .editorconfig: Indentation rules for .yul 2020-11-10 23:31:05 +01:00
.gitattributes Create .gitattributes 2018-02-20 18:41:02 -05:00
.gitignore Add *.orig to .gitignore. 2023-05-11 09:14:16 -05:00
.readthedocs.yml Add readthedocs configuration 2023-05-10 18:04:47 +02:00
Changelog.md IRGeneratorForStatements: Fix undefined order of functions when generating code for index expressions 2023-07-13 11:06:11 +02:00
CMakeLists.txt Fix incorrect CMAKE_SOURCE_DIR usage 2023-06-08 19:17:34 +08:00
CODE_OF_CONDUCT.md Update CODE_OF_CONDUCT.md 2022-11-09 14:55:59 +01:00
codecov.yml Fix patch coverage settings 2019-02-20 16:09:00 +01:00
CODING_STYLE.md Purge using namespace std 2023-07-10 13:12:46 +02:00
CONTRIBUTING.md Replace links to readthedocs.io with ones using the new domain 2020-11-18 15:20:34 +01:00
LICENSE.txt Align license to those in file headers. 2016-06-08 22:57:30 +02:00
README.md Update README maintainers 2022-11-08 16:30:00 +01:00
ReleaseChecklist.md Misspelling and terms inconsistencies (#14280) 2023-05-30 20:49:25 +01:00
ReviewChecklist.md Use std:: prefix with std::forward() as well to satisfy Clang 2023-03-06 18:20:49 +01:00
SECURITY.md Replace links to readthedocs.io with ones using the new domain 2020-11-18 15:20:34 +01:00

The Solidity Contract-Oriented Programming Language

Matrix Chat Gitter Chat Solidity Forum Twitter Follow Mastodon Follow

You can talk to us on Gitter and Matrix, tweet at us on Twitter or create a new topic in the Solidity forum. Questions, feedback, and suggestions are welcome!

Solidity is a statically typed, contract-oriented, high-level language for implementing smart contracts on the Ethereum platform.

For a good overview and starting point, please check out the official Solidity Language Portal.

Table of Contents

Background

Solidity is a statically-typed curly-braces programming language designed for developing smart contracts that run on the Ethereum Virtual Machine. Smart contracts are programs that are executed inside a peer-to-peer network where nobody has special authority over the execution, and thus they allow anyone to implement tokens of value, ownership, voting, and other kinds of logic.

When deploying contracts, you should use the latest released version of Solidity. This is because breaking changes, as well as new features and bug fixes, are introduced regularly. We currently use a 0.x version number to indicate this fast pace of change.

Build and Install

Instructions about how to build and install the Solidity compiler can be found in the Solidity documentation.

Example

A "Hello World" program in Solidity is of even less use than in other languages, but still:

// SPDX-License-Identifier: MIT
pragma solidity >=0.6.0 <0.9.0;

contract HelloWorld {
    function helloWorld() external pure returns (string memory) {
        return "Hello, World!";
    }
}

To get started with Solidity, you can use Remix, which is a browser-based IDE. Here are some example contracts:

  1. Voting
  2. Blind Auction
  3. Safe remote purchase
  4. Micropayment Channel

Documentation

The Solidity documentation is hosted using Read the Docs.

Development

Solidity is still under development. Contributions are always welcome! Please follow the Developers Guide if you want to help.

You can find our current feature and bug priorities for forthcoming releases in the projects section.

Maintainers

The Solidity programming language and compiler are open-source community projects governed by a core team. The core team is sponsored by the Ethereum Foundation.

License

Solidity is licensed under GNU General Public License v3.0.

Some third-party code has its own licensing terms.

Security

The security policy may be found here.