aboutsummaryrefslogtreecommitdiffstats
path: root/docs
diff options
context:
space:
mode:
Diffstat (limited to 'docs')
-rw-r--r--docs/abi-spec.rst11
-rw-r--r--docs/index.rst134
-rw-r--r--docs/resources.rst132
3 files changed, 144 insertions, 133 deletions
diff --git a/docs/abi-spec.rst b/docs/abi-spec.rst
index 2c206dad..0f4a16b6 100644
--- a/docs/abi-spec.rst
+++ b/docs/abi-spec.rst
@@ -590,6 +590,17 @@ would result in the JSON:
.. _abi_packed_mode:
+Strict Encoding Mode
+====================
+
+Strict encoding mode is the mode that leads to exactly the same encoding as defined in the formal specification above.
+This means offsets have to be as small as possible while still not creating overlaps in the data areas and thus no gaps are
+allowed.
+
+Usually, ABI decoders are written in a straigthforward way just following offset pointers, but some decoders
+might enforce strict mode. The Solidity ABI decoder currently does not enforce strict mode, but the encoder
+always creates data in strict mode.
+
Non-standard Packed Mode
========================
diff --git a/docs/index.rst b/docs/index.rst
index 37d17348..b60ea06d 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -46,139 +46,6 @@ with varying degrees of completeness and up-to-dateness. The English version sta
* `Korean <http://solidity-kr.readthedocs.io>`_ (in progress)
* `French <http://solidity-fr.readthedocs.io>`_ (in progress)
-
-Useful links
-------------
-
-General
-~~~~~~~
-
-* `Ethereum <https://ethereum.org>`_
-
-* `Changelog <https://github.com/ethereum/solidity/blob/develop/Changelog.md>`_
-
-* `Source Code <https://github.com/ethereum/solidity/>`_
-
-* `Ethereum Stackexchange <https://ethereum.stackexchange.com/>`_
-
-* `Language Users Chat <https://gitter.im/ethereum/solidity/>`_
-
-* `Compiler Developers Chat <https://gitter.im/ethereum/solidity-dev/>`_
-
-Available Solidity Integrations
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-* Generic:
-
- * `EthFiddle <https://ethfiddle.com/>`_
- Solidity IDE in the Browser. Write and share your solidity code. Uses server-side components.
-
- * `Remix <https://remix.ethereum.org/>`_
- Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components.
-
- * `Solium <https://github.com/duaraghav8/Solium/>`_
- Linter to identify and fix style and security issues in Solidity.
-
- * `Solhint <https://github.com/protofire/solhint>`_
- Solidity linter that provides security, style guide and best practice rules for smart contract validation.
-
-* Atom:
-
- * `Etheratom <https://github.com/0mkara/etheratom>`_
- Plugin for the Atom editor that features syntax highlighting, compilation and a runtime environment (Backend node & VM compatible).
-
- * `Atom Solidity Linter <https://atom.io/packages/linter-solidity>`_
- Plugin for the Atom editor that provides Solidity linting.
-
- * `Atom Solium Linter <https://atom.io/packages/linter-solium>`_
- Configurable Solidty linter for Atom using Solium as a base.
-
-* Eclipse:
-
- * `YAKINDU Solidity Tools <https://yakindu.github.io/solidity-ide/>`_
- Eclipse based IDE. Features context sensitive code completion and help, code navigation, syntax coloring, built in compiler, quick fixes and templates.
-
-* Emacs:
-
- * `Emacs Solidity <https://github.com/ethereum/emacs-solidity/>`_
- Plugin for the Emacs editor providing syntax highlighting and compilation error reporting.
-
-* IntelliJ:
-
- * `IntelliJ IDEA plugin <https://plugins.jetbrains.com/plugin/9475-intellij-solidity>`_
- Solidity plugin for IntelliJ IDEA (and all other JetBrains IDEs)
-
-* Sublime:
-
- * `Package for SublimeText — Solidity language syntax <https://packagecontrol.io/packages/Ethereum/>`_
- Solidity syntax highlighting for SublimeText editor.
-
-* Vim:
-
- * `Vim Solidity <https://github.com/tomlion/vim-solidity/>`_
- Plugin for the Vim editor providing syntax highlighting.
-
- * `Vim Syntastic <https://github.com/scrooloose/syntastic>`_
- Plugin for the Vim editor providing compile checking.
-
-* Visual Studio Code:
-
- * `Visual Studio Code extension <http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/>`_
- Solidity plugin for Microsoft Visual Studio Code that includes syntax highlighting and the Solidity compiler.
-
-Discontinued:
-
-* `Mix IDE <https://github.com/ethereum/mix/>`_
- Qt based IDE for designing, debugging and testing solidity smart contracts.
-
-* `Ethereum Studio <https://live.ether.camp/>`_
- Specialized web IDE that also provides shell access to a complete Ethereum environment.
-
-* `Visual Studio Extension <https://visualstudiogallery.msdn.microsoft.com/96221853-33c4-4531-bdd5-d2ea5acc4799/>`_
- Solidity plugin for Microsoft Visual Studio that includes the Solidity compiler.
-
-Solidity Tools
-~~~~~~~~~~~~~~
-
-* `Dapp <https://dapp.tools/dapp/>`_
- Build tool, package manager, and deployment assistant for Solidity.
-
-* `Solidity REPL <https://github.com/raineorshine/solidity-repl>`_
- Try Solidity instantly with a command-line Solidity console.
-
-* `solgraph <https://github.com/raineorshine/solgraph>`_
- Visualize Solidity control flow and highlight potential security vulnerabilities.
-
-* `Doxity <https://github.com/DigixGlobal/doxity>`_
- Documentation Generator for Solidity.
-
-* `evmdis <https://github.com/Arachnid/evmdis>`_
- EVM Disassembler that performs static analysis on the bytecode to provide a higher level of abstraction than raw EVM operations.
-
-* `ABI to solidity interface converter <https://gist.github.com/chriseth/8f533d133fa0c15b0d6eaf3ec502c82b>`_
- A script for generating contract interfaces from the ABI of a smart contract.
-
-* `Securify <https://securify.ch/>`_
- Fully automated online static analyzer for smart contracts, providing a security report based on vulnerability patterns.
-
-* `Sūrya <https://github.com/ConsenSys/surya/>`_
- Utility tool for smart contract systems, offering a number of visual outputs and information about the contracts' structure. Also supports querying the function call graph.
-
-* `EVM Lab <https://github.com/ethereum/evmlab/>`_
- Rich tool package to interact with the EVM. Includes a VM, Etherchain API, and a trace-viewer with gas cost display.
-
-.. note::
- Information like variable names, comments, and source code formatting is lost in the compilation process and it is not possible to completely recover the original source code. Decompiling smart contracts to view the original source code might not be possible, or the end result that useful.
-
-Third-Party Solidity Parsers and Grammars
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-
-* `solidity-parser <https://github.com/ConsenSys/solidity-parser>`_
- Solidity parser for JavaScript
-
-* `Solidity Grammar for ANTLR 4 <https://github.com/federicobond/solidity-antlr4>`_
- Solidity grammar for the ANTLR 4 parser generator
-
Language Documentation
----------------------
@@ -211,6 +78,7 @@ Contents
solidity-by-example.rst
solidity-in-depth.rst
security-considerations.rst
+ resources.rst
using-the-compiler.rst
metadata.rst
abi-spec.rst
diff --git a/docs/resources.rst b/docs/resources.rst
new file mode 100644
index 00000000..e9e65692
--- /dev/null
+++ b/docs/resources.rst
@@ -0,0 +1,132 @@
+Resources
+---------
+
+General
+~~~~~~~
+
+* `Ethereum <https://ethereum.org>`_
+
+* `Changelog <https://github.com/ethereum/solidity/blob/develop/Changelog.md>`_
+
+* `Source Code <https://github.com/ethereum/solidity/>`_
+
+* `Ethereum Stackexchange <https://ethereum.stackexchange.com/>`_
+
+* `Language Users Chat <https://gitter.im/ethereum/solidity/>`_
+
+* `Compiler Developers Chat <https://gitter.im/ethereum/solidity-dev/>`_
+
+Solidity Integrations
+~~~~~~~~~~~~~~~~~~~~~
+
+* Generic:
+
+
+ * `EthFiddle <https://ethfiddle.com/>`_
+ Solidity IDE in the Browser. Write and share your solidity code. Uses server-side components.
+
+ * `Remix <https://remix.ethereum.org/>`_
+ Browser-based IDE with integrated compiler and Solidity runtime environment without server-side components.
+
+ * `Solium <https://github.com/duaraghav8/Solium/>`_
+ Linter to identify and fix style and security issues in Solidity.
+
+ * `Solhint <https://github.com/protofire/solhint>`_
+ Solidity linter that provides security, style guide and best practice rules for smart contract validation.
+
+* Atom:
+
+ * `Etheratom <https://github.com/0mkara/etheratom>`_
+ Plugin for the Atom editor that features syntax highlighting, compilation and a runtime environment (Backend node & VM compatible).
+
+ * `Atom Solidity Linter <https://atom.io/packages/linter-solidity>`_
+ Plugin for the Atom editor that provides Solidity linting.
+
+ * `Atom Solium Linter <https://atom.io/packages/linter-solium>`_
+ Configurable Solidty linter for Atom using Solium as a base.
+
+* Eclipse:
+
+ * `YAKINDU Solidity Tools <https://yakindu.github.io/solidity-ide/>`_
+ Eclipse based IDE. Features context sensitive code completion and help, code navigation, syntax coloring, built in compiler, quick fixes and templates.
+
+* Emacs:
+
+ * `Emacs Solidity <https://github.com/ethereum/emacs-solidity/>`_
+ Plugin for the Emacs editor providing syntax highlighting and compilation error reporting.
+
+* IntelliJ:
+
+ * `IntelliJ IDEA plugin <https://plugins.jetbrains.com/plugin/9475-intellij-solidity>`_
+ Solidity plugin for IntelliJ IDEA (and all other JetBrains IDEs)
+
+* Sublime:
+
+ * `Package for SublimeText - Solidity language syntax <https://packagecontrol.io/packages/Ethereum/>`_
+ Solidity syntax highlighting for SublimeText editor.
+
+* Vim:
+
+ * `Vim Solidity <https://github.com/tomlion/vim-solidity/>`_
+ Plugin for the Vim editor providing syntax highlighting.
+
+ * `Vim Syntastic <https://github.com/scrooloose/syntastic>`_
+ Plugin for the Vim editor providing compile checking.
+
+* Visual Studio Code:
+
+ * `Visual Studio Code extension <http://juan.blanco.ws/solidity-contracts-in-visual-studio-code/>`_
+ Solidity plugin for Microsoft Visual Studio Code that includes syntax highlighting and the Solidity compiler.
+
+Discontinued:
+
+* `Mix IDE <https://github.com/ethereum/mix/>`_
+ Qt based IDE for designing, debugging and testing solidity smart contracts.
+
+* `Ethereum Studio <https://live.ether.camp/>`_
+ Specialized web IDE that also provides shell access to a complete Ethereum environment.
+
+* `Visual Studio Extension <https://visualstudiogallery.msdn.microsoft.com/96221853-33c4-4531-bdd5-d2ea5acc4799/>`_
+ Solidity plugin for Microsoft Visual Studio that includes the Solidity compiler.
+
+Solidity Tools
+~~~~~~~~~~~~~~
+
+* `Dapp <https://dapp.tools/dapp/>`_
+ Build tool, package manager, and deployment assistant for Solidity.
+
+* `Solidity REPL <https://github.com/raineorshine/solidity-repl>`_
+ Try Solidity instantly with a command-line Solidity console.
+
+* `solgraph <https://github.com/raineorshine/solgraph>`_
+ Visualize Solidity control flow and highlight potential security vulnerabilities.
+
+* `Doxity <https://github.com/DigixGlobal/doxity>`_
+ Documentation Generator for Solidity.
+
+* `evmdis <https://github.com/Arachnid/evmdis>`_
+ EVM Disassembler that performs static analysis on the bytecode to provide a higher level of abstraction than raw EVM operations.
+
+* `ABI to solidity interface converter <https://gist.github.com/chriseth/8f533d133fa0c15b0d6eaf3ec502c82b>`_
+ A script for generating contract interfaces from the ABI of a smart contract.
+
+* `Securify <https://securify.ch/>`_
+ Fully automated online static analyzer for smart contracts, providing a security report based on vulnerability patterns.
+
+* `Sūrya <https://github.com/ConsenSys/surya/>`_
+ Utility tool for smart contract systems, offering a number of visual outputs and information about the contracts' structure. Also supports querying the function call graph.
+
+* `EVM Lab <https://github.com/ethereum/evmlab/>`_
+ Rich tool package to interact with the EVM. Includes a VM, Etherchain API, and a trace-viewer with gas cost display.
+
+.. note::
+ Information like variable names, comments, and source code formatting is lost in the compilation process and it is not possible to completely recover the original source code. Decompiling smart contracts to view the original source code might not be possible, or the end result that useful.
+
+Third-Party Solidity Parsers and Grammars
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+* `solidity-parser <https://github.com/ConsenSys/solidity-parser>`_
+ Solidity parser for JavaScript
+
+* `Solidity Grammar for ANTLR 4 <https://github.com/federicobond/solidity-antlr4>`_
+ Solidity grammar for the ANTLR 4 parser generator