From 0c5e5bd4251ec42dad06f003f26cb8784a187461 Mon Sep 17 00:00:00 2001 From: deeputg Date: Tue, 7 Jul 2020 12:05:50 +0530 Subject: [PATCH 1/4] dockerfile build from scripts updates --- .gitignore | 2 +- Dockerfile | 15 + README.md | 147 +- .../build/contracts/eosio.bios/eosio.bios.abi | 498 +++++ .../contracts/eosio.bios/eosio.bios.wasm | Bin 0 -> 13854 bytes .../ricardian/eosio.bios.contracts.md | 161 ++ .../build/contracts/eosio.msig/eosio.msig.abi | 359 +++ .../contracts/eosio.msig/eosio.msig.wasm | Bin 0 -> 31971 bytes .../ricardian/eosio.msig.contracts.md | 73 + .../eosio.system/.rex/rex.results.abi | 76 + .../eosio.system/.rex/rex.results.wasm | Bin 0 -> 1274 bytes .../contracts/eosio.system/eosio.system.abi | 1972 +++++++++++++++++ .../contracts/eosio.system/eosio.system.wasm | Bin 0 -> 263836 bytes .../ricardian/eosio.system.contracts.md | 653 ++++++ .../contracts/eosio.token/eosio.token.abi | 185 ++ .../contracts/eosio.token/eosio.token.wasm | Bin 0 -> 25839 bytes .../ricardian/eosio.token.contracts.md | 95 + .../build/contracts/eosio.wrap/eosio.wrap.abi | 129 ++ .../contracts/eosio.wrap/eosio.wrap.wasm | Bin 0 -> 1173 bytes .../ricardian/eosio.wrap.contracts.md | 13 + .../contracts_project-configure | 0 .../contracts_project-done | 0 .../contracts_project-download | 0 .../contracts_project-install | 0 .../contracts_project-mkdir | 0 .../contracts_project-patch | 0 .../contracts_project-test | 0 .../contracts_project-update | 0 .../tmp/contracts_project-cfgcmd.txt | 1 + .../tmp/contracts_project-cfgcmd.txt.in | 1 + .../contracts_unit_tests-download | 0 .../contracts_unit_tests-mkdir | 0 .../contracts_unit_tests-patch | 0 .../contracts_unit_tests-update | 0 .../tmp/contracts_unit_tests-cfgcmd.txt | 1 + .../tmp/contracts_unit_tests-cfgcmd.txt.in | 1 + scripts/node/automated_start.sh | 13 + scripts/node/clean.sh | 3 + scripts/node/genesis_start.sh | 36 + scripts/node/hard_start.sh | 35 + scripts/node/start.sh | 34 + scripts/node/stop.sh | 16 + 42 files changed, 4436 insertions(+), 83 deletions(-) create mode 100644 Dockerfile create mode 100644 scripts/cdt/build/contracts/eosio.bios/eosio.bios.abi create mode 100755 scripts/cdt/build/contracts/eosio.bios/eosio.bios.wasm create mode 100644 scripts/cdt/build/contracts/eosio.bios/ricardian/eosio.bios.contracts.md create mode 100644 scripts/cdt/build/contracts/eosio.msig/eosio.msig.abi create mode 100755 scripts/cdt/build/contracts/eosio.msig/eosio.msig.wasm create mode 100644 scripts/cdt/build/contracts/eosio.msig/ricardian/eosio.msig.contracts.md create mode 100644 scripts/cdt/build/contracts/eosio.system/.rex/rex.results.abi create mode 100755 scripts/cdt/build/contracts/eosio.system/.rex/rex.results.wasm create mode 100644 scripts/cdt/build/contracts/eosio.system/eosio.system.abi create mode 100755 scripts/cdt/build/contracts/eosio.system/eosio.system.wasm create mode 100644 scripts/cdt/build/contracts/eosio.system/ricardian/eosio.system.contracts.md create mode 100644 scripts/cdt/build/contracts/eosio.token/eosio.token.abi create mode 100755 scripts/cdt/build/contracts/eosio.token/eosio.token.wasm create mode 100644 scripts/cdt/build/contracts/eosio.token/ricardian/eosio.token.contracts.md create mode 100644 scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.abi create mode 100755 scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.wasm create mode 100644 scripts/cdt/build/contracts/eosio.wrap/ricardian/eosio.wrap.contracts.md create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-configure create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-done create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-download create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-install create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-mkdir create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-patch create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-test create mode 100644 scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-update create mode 100644 scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt create mode 100644 scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt.in create mode 100644 scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-download create mode 100644 scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-mkdir create mode 100644 scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-patch create mode 100644 scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-update create mode 100644 scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt create mode 100644 scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt.in create mode 100755 scripts/node/automated_start.sh create mode 100755 scripts/node/clean.sh create mode 100755 scripts/node/genesis_start.sh create mode 100644 scripts/node/hard_start.sh create mode 100755 scripts/node/start.sh create mode 100644 scripts/node/stop.sh diff --git a/.gitignore b/.gitignore index 6dd6c1ca492..6c603ce8236 100644 --- a/.gitignore +++ b/.gitignore @@ -76,7 +76,7 @@ witness_node_data_dir Testing/* build.tar.gz -build/* +# build/* build-debug/* etc/eosio/node_* diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000000..10df2716c46 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,15 @@ +FROM ubuntu:18.04 +COPY . /DreamchainCore +# COPY ./build/1.8/ /eosio/1.8 +# COPY ./scripts/cdt/ /eosio/cdt +RUN apt update +RUN apt install git curl -y +RUN /DreamchainCore/scripts/eosio_build.sh -y +RUN /DreamchainCore/scripts/eosio_install.sh + +# ENV PATH="/eosio/1.8/bin:${PATH}" +# ENV PATH="/eosio/cdt/build:${PATH}" + + +ENV PATH="~eosio/1.8/bin:${PATH}" +ENV PATH="/DreamchainCore/scripts/cdt/build:${PATH}" \ No newline at end of file diff --git a/README.md b/README.md index 5da3d56adee..d28bcb1aae2 100644 --- a/README.md +++ b/README.md @@ -1,112 +1,95 @@ +# Dreamchain -# EOSIO - The Most Powerful Infrastructure for Decentralized Applications +Welcome to the Dreamchain source code repository! This project enables you to take part in Dreamchain blockchain network. It is a fork of eosio software. -[![Build status](https://badge.buildkite.com/370fe5c79410f7d695e4e34c500b4e86e3ac021c6b1f739e20.svg?branch=master)](https://buildkite.com/EOSIO/eosio) +## Instructions -Welcome to the EOSIO source code repository! This software enables businesses to rapidly build and deploy high-performance and high-security blockchain-based applications. +### Running natively -Some of the groundbreaking features of EOSIO include: +1. Clone this repo -1. Free Rate Limited Transactions -1. Low Latency Block confirmation (0.5 seconds) -1. Low-overhead Byzantine Fault Tolerant Finality -1. Designed for optional high-overhead, low-latency BFT finality -1. Smart contract platform powered by WebAssembly -1. Designed for Sparse Header Light Client Validation -1. Scheduled Recurring Transactions -1. Time Delay Security -1. Hierarchical Role Based Permissions -1. Support for Biometric Hardware Secured Keys (e.g. Apple Secure Enclave) -1. Designed for Parallel Execution of Context Free Validation Logic -1. Designed for Inter Blockchain Communication - -EOSIO is released under the open source MIT license and is offered “AS IS” without warranty of any kind, express or implied. Any security provided by the EOSIO software depends in part on how it is used, configured, and deployed. EOSIO is built upon many third-party libraries such as WABT (Apache License) and WAVM (BSD 3-clause) which are also provided “AS IS” without warranty of any kind. Without limiting the generality of the foregoing, Block.one makes no representation or guarantee that EOSIO or any third-party libraries will perform as intended or will be free of errors, bugs or faulty code. Both may fail in large or small ways that could completely or partially limit functionality or compromise computer systems. If you use or implement EOSIO, you do so at your own risk. In no event will Block.one be liable to any party for any damages whatsoever, even if it had been advised of the possibility of damage. +``` +git clone git@github.com:Dreamchain-org/DreamChainCore.git +``` -Block.one is neither launching nor operating any initial public blockchains based upon the EOSIO software. This release refers only to version 1.0 of our open source software. We caution those who wish to use blockchains built on EOSIO to carefully vet the companies and organizations launching blockchains based on EOSIO before disclosing any private keys to their derivative software. +2. enter the folder -There is no public testnet running currently. +``` +cd DreamChainCore +``` ---- +3. Build the core using a prebuilt script file located in scrips folder -**If you used our build scripts to install eosio, [please be sure to uninstall](#build-script-uninstall) before using our packages.** +``` +./scripts/eosio_build.sh +``` ---- +4. Install the core using a prebuilt script file located in scrips folder -#### Mac OS X Brew Install -```sh -$ brew tap eosio/eosio -$ brew install eosio ``` -#### Mac OS X Brew Uninstall -```sh -$ brew remove eosio +./scripts/eosio_install.sh ``` -#### Ubuntu 18.04 Package Install -```sh -$ wget https://github.com/eosio/eos/releases/download/v1.8.6/eosio_1.8.6-1-ubuntu-18.04_amd64.deb -$ sudo apt install ./eosio_1.8.6-1-ubuntu-18.04_amd64.deb -``` -#### Ubuntu 16.04 Package Install -```sh -$ wget https://github.com/eosio/eos/releases/download/v1.8.6/eosio_1.8.6-1-ubuntu-16.04_amd64.deb -$ sudo apt install ./eosio_1.8.6-1-ubuntu-16.04_amd64.deb +5. For uninstalling + ``` -#### Ubuntu Package Uninstall -```sh -$ sudo apt remove eosio +./scripts/eosio_uninstall.sh ``` -#### Centos RPM Package Install -```sh -$ wget https://github.com/eosio/eos/releases/download/v1.8.6/eosio-1.8.6-1.el7.x86_64.rpm -$ sudo yum install ./eosio-1.8.6-1.el7.x86_64.rpm + +### Running on Docker + +1. Clone this repo + ``` -#### Centos RPM Package Uninstall -```sh -$ sudo yum remove eosio +git clone git@github.com:Dreamchain-org/DreamChainCore.git ``` -#### Build Script Uninstall - -If you have previously installed EOSIO using build scripts, you can execute `eosio_uninstall.sh` to uninstall. -- Passing `-y` will answer yes to all prompts (does not remove data directories) -- Passing `-f` will remove data directories (be very careful with this) -- Passing in `-i` allows you to specify where your eosio installation is located +2. enter the folder -## Supported Operating Systems -EOSIO currently supports the following operating systems: -1. Amazon Linux 2 -2. CentOS 7 -3. Ubuntu 16.04 -4. Ubuntu 18.04 -5. MacOS 10.14 (Mojave) +``` +cd DreamChainCore +``` -## Resources -1. [Website](https://eos.io) -1. [Blog](https://medium.com/eosio) -1. [Developer Portal](https://developers.eos.io) -1. [StackExchange for Q&A](https://eosio.stackexchange.com/) -1. [Community Telegram Group](https://t.me/EOSProject) -1. [Developer Telegram Group](https://t.me/joinchat/EaEnSUPktgfoI-XPfMYtcQ) -1. [White Paper](https://github.com/EOSIO/Documentation/blob/master/TechnicalWhitePaper.md) -1. [Roadmap](https://github.com/EOSIO/Documentation/blob/master/Roadmap.md) +3. build the docker file by running the following command - -## Getting Started -Instructions detailing the process of getting the software, building it, running a simple test network that produces blocks, account creation and uploading a sample contract to the blockchain can be found in [Getting Started](https://developers.eos.io/eosio-home/docs) on the [EOSIO Developer Portal](https://developers.eos.io). +``` +docker build dreamchain/node:latest . +``` -## Contributing +4. run the docker image by running the following command -[Contributing Guide](./CONTRIBUTING.md) +``` +docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/automated_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 + +arg1 - public key of the node (must be of the stopped node) +arg2 - private key of the node(must be of the stopped node) +arg3 - account name (must be of the stopped node) +arg4 - nodeos running port (default:8888) +arg5 - p2p listening port (default:9010) +arg6 - ip address of another working node with its p2p port +arg7 - ip address of another working node with its p2p port +arg8 - ip address of another working node with its p2p port +``` -[Code of Conduct](./CONTRIBUTING.md#conduct) +All the arguments are mandatory. -## License +4. If the node stoped working with a log - "hard restart required", please run the following command to restart the node -[MIT](./LICENSE) +``` +docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/hard_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 + +arg1 - public key of the node (must be created prior to this step) +arg2 - private key of the node(must be created prior to this step) +arg3 - account name (must be created prior to this step) +arg4 - nodeos running port (default:8888) +arg5 - p2p listening port (default:9010) +arg6 - ip address of another working node with its p2p port +arg7 - ip address of another working node with its p2p port +arg8 - ip address of another working node with its p2p port +``` -## Important +All the arguments are mandatory. -See [LICENSE](./LICENSE) for copyright and license terms. +## Branches -All repositories and other materials are provided subject to the terms of this [IMPORTANT](./IMPORTANT.md) notice and you must familiarize yourself with its terms. The notice contains important information, limitations and restrictions relating to our software, publications, trademarks, third-party resources, and forward-looking statements. By accessing any of our repositories and other materials, you accept and agree to the terms of the notice. +To create a new feature or bugfix (or chore) please create a new branch and use a prefix (e.g `feature/my-awesome-new-feature` or `bugfix/something-not-working`). The prefixes we use are `bug`, `feat`, `chore` and `hotfix`. Please don't use anything else. diff --git a/scripts/cdt/build/contracts/eosio.bios/eosio.bios.abi b/scripts/cdt/build/contracts/eosio.bios/eosio.bios.abi new file mode 100644 index 00000000000..11422b27f20 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.bios/eosio.bios.abi @@ -0,0 +1,498 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "abi_hash", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "hash", + "type": "checksum256" + } + ] + }, + { + "name": "authority", + "base": "", + "fields": [ + { + "name": "threshold", + "type": "uint32" + }, + { + "name": "keys", + "type": "key_weight[]" + }, + { + "name": "accounts", + "type": "permission_level_weight[]" + }, + { + "name": "waits", + "type": "wait_weight[]" + } + ] + }, + { + "name": "blockchain_parameters", + "base": "", + "fields": [ + { + "name": "max_block_net_usage", + "type": "uint64" + }, + { + "name": "target_block_net_usage_pct", + "type": "uint32" + }, + { + "name": "max_transaction_net_usage", + "type": "uint32" + }, + { + "name": "base_per_transaction_net_usage", + "type": "uint32" + }, + { + "name": "net_usage_leeway", + "type": "uint32" + }, + { + "name": "context_free_discount_net_usage_num", + "type": "uint32" + }, + { + "name": "context_free_discount_net_usage_den", + "type": "uint32" + }, + { + "name": "max_block_cpu_usage", + "type": "uint32" + }, + { + "name": "target_block_cpu_usage_pct", + "type": "uint32" + }, + { + "name": "max_transaction_cpu_usage", + "type": "uint32" + }, + { + "name": "min_transaction_cpu_usage", + "type": "uint32" + }, + { + "name": "max_transaction_lifetime", + "type": "uint32" + }, + { + "name": "deferred_trx_expiration_window", + "type": "uint32" + }, + { + "name": "max_transaction_delay", + "type": "uint32" + }, + { + "name": "max_inline_action_size", + "type": "uint32" + }, + { + "name": "max_inline_action_depth", + "type": "uint16" + }, + { + "name": "max_authority_depth", + "type": "uint16" + } + ] + }, + { + "name": "canceldelay", + "base": "", + "fields": [ + { + "name": "canceling_auth", + "type": "permission_level" + }, + { + "name": "trx_id", + "type": "checksum256" + } + ] + }, + { + "name": "deleteauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "key_weight", + "base": "", + "fields": [ + { + "name": "key", + "type": "public_key" + }, + { + "name": "weight", + "type": "uint16" + } + ] + }, + { + "name": "linkauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "code", + "type": "name" + }, + { + "name": "type", + "type": "name" + }, + { + "name": "requirement", + "type": "name" + } + ] + }, + { + "name": "newaccount", + "base": "", + "fields": [ + { + "name": "creator", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "owner", + "type": "authority" + }, + { + "name": "active", + "type": "authority" + } + ] + }, + { + "name": "onerror", + "base": "", + "fields": [ + { + "name": "sender_id", + "type": "uint128" + }, + { + "name": "sent_trx", + "type": "bytes" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "permission_level_weight", + "base": "", + "fields": [ + { + "name": "permission", + "type": "permission_level" + }, + { + "name": "weight", + "type": "uint16" + } + ] + }, + { + "name": "producer_key", + "base": "", + "fields": [ + { + "name": "producer_name", + "type": "name" + }, + { + "name": "block_signing_key", + "type": "public_key" + } + ] + }, + { + "name": "reqauth", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + } + ] + }, + { + "name": "setabi", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "abi", + "type": "bytes" + } + ] + }, + { + "name": "setalimits", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "ram_bytes", + "type": "int64" + }, + { + "name": "net_weight", + "type": "int64" + }, + { + "name": "cpu_weight", + "type": "int64" + } + ] + }, + { + "name": "setcode", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "vmtype", + "type": "uint8" + }, + { + "name": "vmversion", + "type": "uint8" + }, + { + "name": "code", + "type": "bytes" + } + ] + }, + { + "name": "setparams", + "base": "", + "fields": [ + { + "name": "params", + "type": "blockchain_parameters" + } + ] + }, + { + "name": "setpriv", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "is_priv", + "type": "uint8" + } + ] + }, + { + "name": "setprods", + "base": "", + "fields": [ + { + "name": "schedule", + "type": "producer_key[]" + } + ] + }, + { + "name": "unlinkauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "code", + "type": "name" + }, + { + "name": "type", + "type": "name" + } + ] + }, + { + "name": "updateauth", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "permission", + "type": "name" + }, + { + "name": "parent", + "type": "name" + }, + { + "name": "auth", + "type": "authority" + } + ] + }, + { + "name": "wait_weight", + "base": "", + "fields": [ + { + "name": "wait_sec", + "type": "uint32" + }, + { + "name": "weight", + "type": "uint16" + } + ] + } + ], + "actions": [ + { + "name": "canceldelay", + "type": "canceldelay", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Cancel Delayed Transaction\nsummary: '{{nowrap canceling_auth.actor}} cancels a delayed transaction'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\n{{canceling_auth.actor}} cancels the delayed transaction with id {{trx_id}}." + }, + { + "name": "deleteauth", + "type": "deleteauth", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Delete Account Permission\nsummary: 'Delete the {{nowrap permission}} permission of {{nowrap account}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\nDelete the {{permission}} permission of {{account}}." + }, + { + "name": "linkauth", + "type": "linkauth", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Link Action to Permission\nsummary: '{{nowrap account}} sets the minimum required permission for the {{#if type}}{{nowrap type}} action of the{{/if}} {{nowrap code}} contract to {{nowrap requirement}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\n{{account}} sets the minimum required permission for the {{#if type}}{{type}} action of the{{/if}} {{code}} contract to {{requirement}}.\n\n{{#if type}}{{else}}Any links explicitly associated to specific actions of {{code}} will take precedence.{{/if}}" + }, + { + "name": "newaccount", + "type": "newaccount", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Create New Account\nsummary: '{{nowrap creator}} creates a new account with the name {{nowrap name}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\n{{creator}} creates a new account with the name {{name}} and the following permissions:\n\nowner permission with authority:\n{{to_json owner}}\n\nactive permission with authority:\n{{to_json active}}" + }, + { + "name": "onerror", + "type": "onerror", + "ricardian_contract": "" + }, + { + "name": "reqauth", + "type": "reqauth", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Assert Authorization\nsummary: 'Assert that authorization by {{nowrap from}} is provided'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\nAssert that authorization by {{from}} is provided." + }, + { + "name": "setabi", + "type": "setabi", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Deploy Contract ABI\nsummary: 'Deploy contract ABI on account {{nowrap account}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\nDeploy the ABI file associated with the contract on account {{account}}." + }, + { + "name": "setalimits", + "type": "setalimits", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Adjust Resource Limits of Account\nsummary: 'Adjust resource limits of account {{nowrap account}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e\n---\n\n{{$action.account}} updates {{account}}’s resource limits to have a RAM quota of {{ram_bytes}} bytes, a NET bandwidth quota of {{net_weight}} and a CPU bandwidth quota of {{cpu_weight}}." + }, + { + "name": "setcode", + "type": "setcode", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Deploy Contract Code\nsummary: 'Deploy contract code on account {{nowrap account}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\nDeploy compiled contract code to the account {{account}}." + }, + { + "name": "setparams", + "type": "setparams", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Set System Parameters\nsummary: 'Set system parameters'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e\n---\n\n{{$action.account}} sets system parameters to:\n{{to_json params}}" + }, + { + "name": "setpriv", + "type": "setpriv", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Make an Account Privileged or Unprivileged\nsummary: '{{#if is_priv}}Make {{nowrap account}} privileged{{else}}Remove privileged status of {{nowrap account}}{{/if}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e\n---\n\n{{#if is_priv}}\n{{$action.account}} makes {{account}} privileged.\n{{else}}\n{{$action.account}} removes privileged status of {{account}}.\n{{/if}}" + }, + { + "name": "setprods", + "type": "setprods", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Set Block Producers\nsummary: 'Set block producer schedule'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e\n---\n\n{{$action.account}} proposes a block producer schedule of:\n{{#each schedule}}\n 1. {{this.producer_name}} with a block signing key of {{this.block_signing_key}}\n{{/each}}" + }, + { + "name": "unlinkauth", + "type": "unlinkauth", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Unlink Action from Permission\nsummary: '{{nowrap account}} unsets the minimum required permission for the {{#if type}}{{nowrap type}} action of the{{/if}} {{nowrap code}} contract'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\n{{account}} removes the association between the {{#if type}}{{type}} action of the{{/if}} {{code}} contract and its minimum required permission.\n\n{{#if type}}{{else}}This will not remove any links explicitly associated to specific actions of {{code}}.{{/if}}" + }, + { + "name": "updateauth", + "type": "updateauth", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Modify Account Permission\nsummary: 'Add or update the {{nowrap permission}} permission of {{nowrap account}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f\n---\n\nModify, and create if necessary, the {{permission}} permission of {{account}} to have a parent permission of {{parent}} and the following authority:\n{{to_json auth}}" + } + ], + "tables": [ + { + "name": "abihash", + "type": "abi_hash", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/scripts/cdt/build/contracts/eosio.bios/eosio.bios.wasm b/scripts/cdt/build/contracts/eosio.bios/eosio.bios.wasm new file mode 100755 index 0000000000000000000000000000000000000000..d28b983928edb3fb63e8edc45a4396417b873560 GIT binary patch literal 13854 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 Gx&H#f!s=%L literal 0 HcmV?d00001 diff --git a/scripts/cdt/build/contracts/eosio.bios/ricardian/eosio.bios.contracts.md b/scripts/cdt/build/contracts/eosio.bios/ricardian/eosio.bios.contracts.md new file mode 100644 index 00000000000..7e7fb21f388 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.bios/ricardian/eosio.bios.contracts.md @@ -0,0 +1,161 @@ +

canceldelay

+ +--- +spec_version: "0.2.0" +title: Cancel Delayed Transaction +summary: '{{nowrap canceling_auth.actor}} cancels a delayed transaction' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{canceling_auth.actor}} cancels the delayed transaction with id {{trx_id}}. + +

deleteauth

+ +--- +spec_version: "0.2.0" +title: Delete Account Permission +summary: 'Delete the {{nowrap permission}} permission of {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Delete the {{permission}} permission of {{account}}. + +

linkauth

+ +--- +spec_version: "0.2.0" +title: Link Action to Permission +summary: '{{nowrap account}} sets the minimum required permission for the {{#if type}}{{nowrap type}} action of the{{/if}} {{nowrap code}} contract to {{nowrap requirement}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{account}} sets the minimum required permission for the {{#if type}}{{type}} action of the{{/if}} {{code}} contract to {{requirement}}. + +{{#if type}}{{else}}Any links explicitly associated to specific actions of {{code}} will take precedence.{{/if}} + +

newaccount

+ +--- +spec_version: "0.2.0" +title: Create New Account +summary: '{{nowrap creator}} creates a new account with the name {{nowrap name}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{creator}} creates a new account with the name {{name}} and the following permissions: + +owner permission with authority: +{{to_json owner}} + +active permission with authority: +{{to_json active}} + +

reqauth

+ +--- +spec_version: "0.2.0" +title: Assert Authorization +summary: 'Assert that authorization by {{nowrap from}} is provided' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Assert that authorization by {{from}} is provided. + +

setabi

+ +--- +spec_version: "0.2.0" +title: Deploy Contract ABI +summary: 'Deploy contract ABI on account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Deploy the ABI file associated with the contract on account {{account}}. + +

setalimits

+ +--- +spec_version: "0.2.0" +title: Adjust Resource Limits of Account +summary: 'Adjust resource limits of account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} updates {{account}}’s resource limits to have a RAM quota of {{ram_bytes}} bytes, a NET bandwidth quota of {{net_weight}} and a CPU bandwidth quota of {{cpu_weight}}. + +

setcode

+ +--- +spec_version: "0.2.0" +title: Deploy Contract Code +summary: 'Deploy contract code on account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Deploy compiled contract code to the account {{account}}. + +

setparams

+ +--- +spec_version: "0.2.0" +title: Set System Parameters +summary: 'Set system parameters' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} sets system parameters to: +{{to_json params}} + +

setpriv

+ +--- +spec_version: "0.2.0" +title: Make an Account Privileged or Unprivileged +summary: '{{#if is_priv}}Make {{nowrap account}} privileged{{else}}Remove privileged status of {{nowrap account}}{{/if}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{#if is_priv}} +{{$action.account}} makes {{account}} privileged. +{{else}} +{{$action.account}} removes privileged status of {{account}}. +{{/if}} + +

setprods

+ +--- +spec_version: "0.2.0" +title: Set Block Producers +summary: 'Set block producer schedule' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} proposes a block producer schedule of: +{{#each schedule}} + 1. {{this.producer_name}} with a block signing key of {{this.block_signing_key}} +{{/each}} + +

unlinkauth

+ +--- +spec_version: "0.2.0" +title: Unlink Action from Permission +summary: '{{nowrap account}} unsets the minimum required permission for the {{#if type}}{{nowrap type}} action of the{{/if}} {{nowrap code}} contract' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{account}} removes the association between the {{#if type}}{{type}} action of the{{/if}} {{code}} contract and its minimum required permission. + +{{#if type}}{{else}}This will not remove any links explicitly associated to specific actions of {{code}}.{{/if}} + +

updateauth

+ +--- +spec_version: "0.2.0" +title: Modify Account Permission +summary: 'Add or update the {{nowrap permission}} permission of {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Modify, and create if necessary, the {{permission}} permission of {{account}} to have a parent permission of {{parent}} and the following authority: +{{to_json auth}} diff --git a/scripts/cdt/build/contracts/eosio.msig/eosio.msig.abi b/scripts/cdt/build/contracts/eosio.msig/eosio.msig.abi new file mode 100644 index 00000000000..5efdc19f2b6 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.msig/eosio.msig.abi @@ -0,0 +1,359 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "action", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "authorization", + "type": "permission_level[]" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "approval", + "base": "", + "fields": [ + { + "name": "level", + "type": "permission_level" + }, + { + "name": "time", + "type": "time_point" + } + ] + }, + { + "name": "approvals_info", + "base": "", + "fields": [ + { + "name": "version", + "type": "uint8" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "requested_approvals", + "type": "approval[]" + }, + { + "name": "provided_approvals", + "type": "approval[]" + } + ] + }, + { + "name": "approve", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "level", + "type": "permission_level" + }, + { + "name": "proposal_hash", + "type": "checksum256$" + } + ] + }, + { + "name": "cancel", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "canceler", + "type": "name" + } + ] + }, + { + "name": "exec", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "executer", + "type": "name" + } + ] + }, + { + "name": "extension", + "base": "", + "fields": [ + { + "name": "type", + "type": "uint16" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "invalidate", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + } + ] + }, + { + "name": "invalidation", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "last_invalidation_time", + "type": "time_point" + } + ] + }, + { + "name": "old_approvals_info", + "base": "", + "fields": [ + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "requested_approvals", + "type": "permission_level[]" + }, + { + "name": "provided_approvals", + "type": "permission_level[]" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "proposal", + "base": "", + "fields": [ + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "packed_transaction", + "type": "bytes" + } + ] + }, + { + "name": "propose", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "requested", + "type": "permission_level[]" + }, + { + "name": "trx", + "type": "transaction" + } + ] + }, + { + "name": "transaction", + "base": "transaction_header", + "fields": [ + { + "name": "context_free_actions", + "type": "action[]" + }, + { + "name": "actions", + "type": "action[]" + }, + { + "name": "transaction_extensions", + "type": "extension[]" + } + ] + }, + { + "name": "transaction_header", + "base": "", + "fields": [ + { + "name": "expiration", + "type": "time_point_sec" + }, + { + "name": "ref_block_num", + "type": "uint16" + }, + { + "name": "ref_block_prefix", + "type": "uint32" + }, + { + "name": "max_net_usage_words", + "type": "varuint32" + }, + { + "name": "max_cpu_usage_ms", + "type": "uint8" + }, + { + "name": "delay_sec", + "type": "varuint32" + } + ] + }, + { + "name": "unapprove", + "base": "", + "fields": [ + { + "name": "proposer", + "type": "name" + }, + { + "name": "proposal_name", + "type": "name" + }, + { + "name": "level", + "type": "permission_level" + } + ] + } + ], + "actions": [ + { + "name": "approve", + "type": "approve", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Approve Proposed Transaction\nsummary: '{{nowrap level.actor}} approves the {{nowrap proposal_name}} proposal'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153\n---\n\n{{level.actor}} approves the {{proposal_name}} proposal proposed by {{proposer}} with the {{level.permission}} permission of {{level.actor}}." + }, + { + "name": "cancel", + "type": "cancel", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Cancel Proposed Transaction\nsummary: '{{nowrap canceler}} cancels the {{nowrap proposal_name}} proposal'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153\n---\n\n{{canceler}} cancels the {{proposal_name}} proposal submitted by {{proposer}}." + }, + { + "name": "exec", + "type": "exec", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Execute Proposed Transaction\nsummary: '{{nowrap executer}} executes the {{nowrap proposal_name}} proposal'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153\n---\n\n{{executer}} executes the {{proposal_name}} proposal submitted by {{proposer}} if the minimum required approvals for the proposal have been secured." + }, + { + "name": "invalidate", + "type": "invalidate", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Invalidate All Approvals\nsummary: '{{nowrap account}} invalidates approvals on outstanding proposals'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153\n---\n\n{{account}} invalidates all approvals on proposals which have not yet executed." + }, + { + "name": "propose", + "type": "propose", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Propose Transaction\nsummary: '{{nowrap proposer}} creates the {{nowrap proposal_name}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153\n---\n\n{{proposer}} creates the {{proposal_name}} proposal for the following transaction:\n{{to_json trx}}\n\nThe proposal requests approvals from the following accounts at the specified permission levels:\n{{#each requested}}\n + {{this.permission}} permission of {{this.actor}}\n{{/each}}\n\nIf the proposed transaction is not executed prior to {{trx.expiration}}, the proposal will automatically expire." + }, + { + "name": "unapprove", + "type": "unapprove", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Unapprove Proposed Transaction\nsummary: '{{nowrap level.actor}} revokes the approval previously provided to {{nowrap proposal_name}} proposal'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153\n---\n\n{{level.actor}} revokes the approval previously provided at their {{level.permission}} permission level from the {{proposal_name}} proposal proposed by {{proposer}}." + } + ], + "tables": [ + { + "name": "approvals", + "type": "old_approvals_info", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "approvals2", + "type": "approvals_info", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "invals", + "type": "invalidation", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "proposal", + "type": "proposal", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/scripts/cdt/build/contracts/eosio.msig/eosio.msig.wasm b/scripts/cdt/build/contracts/eosio.msig/eosio.msig.wasm new file mode 100755 index 0000000000000000000000000000000000000000..79bdc9f04167cf5551af569ff2a75cc712038f8b GIT binary patch literal 31971 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 n2exrmpwmYeFAPo{f8@!H!Mfapprove + +--- +spec_version: "0.2.0" +title: Approve Proposed Transaction +summary: '{{nowrap level.actor}} approves the {{nowrap proposal_name}} proposal' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153 +--- + +{{level.actor}} approves the {{proposal_name}} proposal proposed by {{proposer}} with the {{level.permission}} permission of {{level.actor}}. + +

cancel

+ +--- +spec_version: "0.2.0" +title: Cancel Proposed Transaction +summary: '{{nowrap canceler}} cancels the {{nowrap proposal_name}} proposal' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153 +--- + +{{canceler}} cancels the {{proposal_name}} proposal submitted by {{proposer}}. + +

exec

+ +--- +spec_version: "0.2.0" +title: Execute Proposed Transaction +summary: '{{nowrap executer}} executes the {{nowrap proposal_name}} proposal' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153 +--- + +{{executer}} executes the {{proposal_name}} proposal submitted by {{proposer}} if the minimum required approvals for the proposal have been secured. + +

invalidate

+ +--- +spec_version: "0.2.0" +title: Invalidate All Approvals +summary: '{{nowrap account}} invalidates approvals on outstanding proposals' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153 +--- + +{{account}} invalidates all approvals on proposals which have not yet executed. + +

propose

+ +--- +spec_version: "0.2.0" +title: Propose Transaction +summary: '{{nowrap proposer}} creates the {{nowrap proposal_name}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153 +--- + +{{proposer}} creates the {{proposal_name}} proposal for the following transaction: +{{to_json trx}} + +The proposal requests approvals from the following accounts at the specified permission levels: +{{#each requested}} + + {{this.permission}} permission of {{this.actor}} +{{/each}} + +If the proposed transaction is not executed prior to {{trx.expiration}}, the proposal will automatically expire. + +

unapprove

+ +--- +spec_version: "0.2.0" +title: Unapprove Proposed Transaction +summary: '{{nowrap level.actor}} revokes the approval previously provided to {{nowrap proposal_name}} proposal' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/multisig.png#4fb41d3cf02d0dd2d35a29308e93c2d826ec770d6bb520db668f530764be7153 +--- + +{{level.actor}} revokes the approval previously provided at their {{level.permission}} permission level from the {{proposal_name}} proposal proposed by {{proposer}}. diff --git a/scripts/cdt/build/contracts/eosio.system/.rex/rex.results.abi b/scripts/cdt/build/contracts/eosio.system/.rex/rex.results.abi new file mode 100644 index 00000000000..6f3d77a03fe --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.system/.rex/rex.results.abi @@ -0,0 +1,76 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "buyresult", + "base": "", + "fields": [ + { + "name": "rex_received", + "type": "asset" + } + ] + }, + { + "name": "orderresult", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "proceeds", + "type": "asset" + } + ] + }, + { + "name": "rentresult", + "base": "", + "fields": [ + { + "name": "rented_tokens", + "type": "asset" + } + ] + }, + { + "name": "sellresult", + "base": "", + "fields": [ + { + "name": "proceeds", + "type": "asset" + } + ] + } + ], + "actions": [ + { + "name": "buyresult", + "type": "buyresult", + "ricardian_contract": "" + }, + { + "name": "orderresult", + "type": "orderresult", + "ricardian_contract": "" + }, + { + "name": "rentresult", + "type": "rentresult", + "ricardian_contract": "" + }, + { + "name": "sellresult", + "type": "sellresult", + "ricardian_contract": "" + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/scripts/cdt/build/contracts/eosio.system/.rex/rex.results.wasm b/scripts/cdt/build/contracts/eosio.system/.rex/rex.results.wasm new file mode 100755 index 0000000000000000000000000000000000000000..27d6f631c32183a22e9f3e7355372287b8c440fb GIT binary patch literal 1274 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 literal 0 HcmV?d00001 diff --git a/scripts/cdt/build/contracts/eosio.system/ricardian/eosio.system.contracts.md b/scripts/cdt/build/contracts/eosio.system/ricardian/eosio.system.contracts.md new file mode 100644 index 00000000000..b0707c49b95 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.system/ricardian/eosio.system.contracts.md @@ -0,0 +1,653 @@ +

bidname

+ +--- +spec_version: "0.2.0" +title: Bid On a Premium Account Name +summary: '{{nowrap bidder}} bids on the premium account name {{nowrap newname}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{bidder}} bids {{bid}} on an auction to own the premium account name {{newname}}. + +{{bidder}} transfers {{bid}} to the system to cover the cost of the bid, which will be returned to {{bidder}} only if {{bidder}} is later outbid in the auction for {{newname}} by another account. + +If the auction for {{newname}} closes with {{bidder}} remaining as the highest bidder, {{bidder}} will be authorized to create the account with name {{newname}}. + +## Bid refund behavior + +If {{bidder}}’s bid on {{newname}} is later outbid by another account, {{bidder}} will be able to claim back the transferred amount of {{bid}}. The system will attempt to automatically do this on behalf of {{bidder}}, but the automatic refund may occasionally fail which will then require {{bidder}} to manually claim the refund with the bidrefund action. + +## Auction close criteria + +The system should automatically close the auction for {{newname}} if it satisfies the condition that over a period of two minutes the following two properties continuously hold: + +- no one has bid on {{newname}} within the last 24 hours; +- and, the value of the latest bid on {{newname}} is greater than the value of the bids on each of the other open auctions. + +Be aware that the condition to close the auction described above are sufficient but not necessary. The auction for {{newname}} cannot close unless both of the properties are simultaneously satisfied, but it may be closed without requiring the properties to hold for a period of 2 minutes. + +

bidrefund

+ +--- +spec_version: "0.2.0" +title: Claim Refund on Name Bid +summary: 'Claim refund on {{nowrap newname}} bid' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{bidder}} claims refund on {{newname}} bid after being outbid by someone else. + +

buyram

+ +--- +spec_version: "0.2.0" +title: Buy RAM +summary: '{{nowrap payer}} buys RAM on behalf of {{nowrap receiver}} by paying {{nowrap quant}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/resource.png#3830f1ce8cb07f7757dbcf383b1ec1b11914ac34a1f9d8b065f07600fa9dac19 +--- + +{{payer}} buys RAM on behalf of {{receiver}} by paying {{quant}}. This transaction will incur a 0.5% fee out of {{quant}} and the amount of RAM delivered will depend on market rates. + +

buyrambytes

+ +--- +spec_version: "0.2.0" +title: Buy RAM +summary: '{{nowrap payer}} buys {{nowrap bytes}} bytes of RAM on behalf of {{nowrap receiver}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/resource.png#3830f1ce8cb07f7757dbcf383b1ec1b11914ac34a1f9d8b065f07600fa9dac19 +--- + +{{payer}} buys approximately {{bytes}} bytes of RAM on behalf of {{receiver}} by paying market rates for RAM. This transaction will incur a 0.5% fee and the cost will depend on market rates. + +

buyrex

+ +--- +spec_version: "0.2.0" +title: Buy REX Tokens +summary: '{{nowrap from}} buys REX tokens in exchange for {{nowrap amount}} and his vote stake increases by {{nowrap amount}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{amount}} is taken out of {{from}}’s REX fund and used to purchase REX tokens at the current market exchange rate. In order for the action to succeed, {{from}} must have voted for a proxy or at least 21 block producers. {{amount}} is added to {{from}}’s vote stake. + +A sell order of the purchased amount can only be initiated after waiting for the maturity period of 4 to 5 days to pass. Even then, depending on the market conditions, the initiated sell order may not be executed immediately. + +

canceldelay

+ +--- +spec_version: "0.2.0" +title: Cancel Delayed Transaction +summary: '{{nowrap canceling_auth.actor}} cancels a delayed transaction' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{canceling_auth.actor}} cancels the delayed transaction with id {{trx_id}}. + +

claimrewards

+ +--- +spec_version: "0.2.0" +title: Claim Block Producer Rewards +summary: '{{nowrap owner}} claims block and vote rewards' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{owner}} claims block and vote rewards from the system. + +

closerex

+ +--- +spec_version: "0.2.0" +title: Cleanup Unused REX Data +summary: 'Delete REX related DB entries and free associated RAM' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +Delete REX related DB entries and free associated RAM for {{owner}}. + +To fully delete all REX related DB entries, {{owner}} must ensure that their REX balance and REX fund amounts are both zero and they have no outstanding loans. + +

cnclrexorder

+ +--- +spec_version: "0.2.0" +title: Cancel Scheduled REX Sell Order +summary: '{{nowrap owner}} cancels a scheduled sell order if not yet filled' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{owner}} cancels their open sell order. + +

consolidate

+ +--- +spec_version: "0.2.0" +title: Consolidate REX Maturity Buckets Into One +summary: 'Consolidate REX maturity buckets into one' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +Consolidate REX maturity buckets into one bucket that {{owner}} will not be able to sell until 4 to 5 days later. + +

defcpuloan

+ +--- +spec_version: "0.2.0" +title: Withdraw from the Fund of a Specific CPU Loan +summary: '{{nowrap from}} transfers {{nowrap amount}} from the fund of CPU loan number {{nowrap loan_num}} back to REX fund' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} transfers {{amount}} from the fund of CPU loan number {{loan_num}} back to REX fund. + +

defnetloan

+ +--- +spec_version: "0.2.0" +title: Withdraw from the Fund of a Specific NET Loan +summary: '{{nowrap from}} transfers {{nowrap amount}} from the fund of NET loan number {{nowrap loan_num}} back to REX fund' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} transfers {{amount}} from the fund of NET loan number {{loan_num}} back to REX fund. + +

delegatebw

+ +--- +spec_version: "0.2.0" +title: Stake Tokens for NET and/or CPU +summary: 'Stake tokens for NET and/or CPU and optionally transfer ownership' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/resource.png#3830f1ce8cb07f7757dbcf383b1ec1b11914ac34a1f9d8b065f07600fa9dac19 +--- + +{{#if transfer}} {{from}} stakes on behalf of {{receiver}} {{stake_net_quantity}} for NET bandwidth and {{stake_cpu_quantity}} for CPU bandwidth. + +Staked tokens will also be transferred to {{receiver}}. The sum of these two quantities will be deducted from {{from}}’s liquid balance and add to the vote weight of {{receiver}}. +{{else}} +{{from}} stakes to self and delegates to {{receiver}} {{stake_net_quantity}} for NET bandwidth and {{stake_cpu_quantity}} for CPU bandwidth. + +The sum of these two quantities add to the vote weight of {{from}}. +{{/if}} + +

deleteauth

+ +--- +spec_version: "0.2.0" +title: Delete Account Permission +summary: 'Delete the {{nowrap permission}} permission of {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Delete the {{permission}} permission of {{account}}. + +

deposit

+ +--- +spec_version: "0.2.0" +title: Deposit Into REX Fund +summary: 'Add to {{nowrap owner}}’s REX fund by transferring {{nowrap amount}} from {{nowrap owner}}’s liquid balance' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +Transfer {{amount}} from {{owner}}’s liquid balance to {{owner}}’s REX fund. All proceeds and expenses related to REX are added to or taken out of this fund. + +

fundcpuloan

+ +--- +spec_version: "0.2.0" +title: Deposit into the Fund of a Specific CPU Loan +summary: '{{nowrap from}} funds a CPU loan' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} transfers {{payment}} from REX fund to the fund of CPU loan number {{loan_num}} in order to be used in loan renewal at expiry. {{from}} can withdraw the total balance of the loan fund at any time. + +

fundnetloan

+ +--- +spec_version: "0.2.0" +title: Deposit into the Fund of a Specific NET Loan +summary: '{{nowrap from}} funds a NET loan' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} transfers {{payment}} from REX fund to the fund of NET loan number {{loan_num}} in order to be used in loan renewal at expiry. {{from}} can withdraw the total balance of the loan fund at any time. + +

init

+ +--- +spec_version: "0.2.0" +title: Initialize System Contract +summary: 'Initialize system contract' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +Initialize system contract. The core token symbol will be set to {{core}}. + +

linkauth

+ +--- +spec_version: "0.2.0" +title: Link Action to Permission +summary: '{{nowrap account}} sets the minimum required permission for the {{#if type}}{{nowrap type}} action of the{{/if}} {{nowrap code}} contract to {{nowrap requirement}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{account}} sets the minimum required permission for the {{#if type}}{{type}} action of the{{/if}} {{code}} contract to {{requirement}}. + +{{#if type}}{{else}}Any links explicitly associated to specific actions of {{code}} will take precedence.{{/if}} + +

newaccount

+ +--- +spec_version: "0.2.0" +title: Create New Account +summary: '{{nowrap creator}} creates a new account with the name {{nowrap name}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{creator}} creates a new account with the name {{name}} and the following permissions: + +owner permission with authority: +{{to_json owner}} + +active permission with authority: +{{to_json active}} + +

mvfrsavings

+ +--- +spec_version: "0.2.0" +title: Unlock REX Tokens +summary: '{{nowrap owner}} unlocks REX Tokens' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{owner}} unlocks {{rex}} by moving it out of the REX savings bucket. The unlocked REX tokens cannot be sold until 4 to 5 days later. + +

mvtosavings

+ +--- +spec_version: "0.2.0" +title: Lock REX Tokens +summary: '{{nowrap owner}} locks REX Tokens' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{owner}} locks {{rex}} by moving it into the REX savings bucket. The locked REX tokens cannot be sold directly and will have to be unlocked explicitly before selling. + +

refund

+ +--- +spec_version: "0.2.0" +title: Claim Unstaked Tokens +summary: 'Return previously unstaked tokens to {{nowrap owner}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Return previously unstaked tokens to {{owner}} after the unstaking period has elapsed. + +

regproducer

+ +--- +spec_version: "0.2.0" +title: Register as a Block Producer Candidate +summary: 'Register {{nowrap producer}} account as a block producer candidate' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/voting.png#db28cd3db6e62d4509af3644ce7d377329482a14bb4bfaca2aa5f1400d8e8a84 +--- + +Register {{producer}} account as a block producer candidate. + +{{$clauses.BlockProducerAgreement}} + +

regproxy

+ +--- +spec_version: "0.2.0" +title: Register/unregister as a Proxy +summary: 'Register/unregister {{nowrap proxy}} as a proxy account' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/voting.png#db28cd3db6e62d4509af3644ce7d377329482a14bb4bfaca2aa5f1400d8e8a84 +--- + +{{#if isproxy}} +{{proxy}} registers as a proxy that can vote on behalf of accounts that appoint it as their proxy. +{{else}} +{{proxy}} unregisters as a proxy that can vote on behalf of accounts that appoint it as their proxy. +{{/if}} + +

rentcpu

+ +--- +spec_version: "0.2.0" +title: Rent CPU Bandwidth for 30 Days +summary: '{{nowrap from}} pays {{nowrap loan_payment}} to rent CPU bandwidth for {{nowrap receiver}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} pays {{loan_payment}} to rent CPU bandwidth on behalf of {{receiver}} for a period of 30 days. + +{{loan_payment}} is taken out of {{from}}’s REX fund. The market price determines the number of tokens to be staked to {{receiver}}’s CPU resources. In addition, {{from}} provides {{loan_fund}}, which is also taken out of {{from}}’s REX fund, to be used for automatic renewal of the loan. + +At expiration, if the loan has less funds than {{loan_payment}}, it is closed and lent tokens that have been staked are taken out of {{receiver}}’s CPU bandwidth. Otherwise, it is renewed at the market price at the time of renewal, that is, the number of staked tokens is recalculated and {{receiver}}’s CPU bandwidth is updated accordingly. {{from}} can fund or defund a loan at any time before expiration. When the loan is closed, {{from}} is refunded any tokens remaining in the loan fund. + +

rentnet

+ +--- +spec_version: "0.2.0" +title: Rent NET Bandwidth for 30 Days +summary: '{{nowrap from}} pays {{nowrap loan_payment}} to rent NET bandwidth for {{nowrap receiver}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} pays {{loan_payment}} to rent NET bandwidth on behalf of {{receiver}} for a period of 30 days. + +{{loan_payment}} is taken out of {{from}}’s REX fund. The market price determines the number of tokens to be staked to {{receiver}}’s NET resources for 30 days. In addition, {{from}} provides {{loan_fund}}, which is also taken out of {{from}}’s REX fund, to be used for automatic renewal of the loan. + +At expiration, if the loan has less funds than {{loan_payment}}, it is closed and lent tokens that have been staked are taken out of {{receiver}}’s NET bandwidth. Otherwise, it is renewed at the market price at the time of renewal, that is, the number of staked tokens is recalculated and {{receiver}}’s NET bandwidth is updated accordingly. {{from}} can fund or defund a loan at any time before expiration. When the loan is closed, {{from}} is refunded any tokens remaining in the loan fund. + +

rexexec

+ +--- +spec_version: "0.2.0" +title: Perform REX Maintenance +summary: 'Process sell orders and expired loans' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +Performs REX maintenance by processing a maximum of {{max}} REX sell orders and expired loans. Any account can execute this action. + +

rmvproducer

+ +--- +spec_version: "0.2.0" +title: Forcibly Unregister a Block Producer Candidate +summary: '{{nowrap producer}} is unregistered as a block producer candidate' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} unregisters {{producer}} as a block producer candidate. {{producer}} account will retain its votes and those votes can change based on voter stake changes or votes removed from {{producer}}. However new voters will not be able to vote for {{producer}} while it remains unregistered. + +

sellram

+ +--- +spec_version: "0.2.0" +title: Sell RAM From Account +summary: 'Sell unused RAM from {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/resource.png#3830f1ce8cb07f7757dbcf383b1ec1b11914ac34a1f9d8b065f07600fa9dac19 +--- + +Sell {{bytes}} bytes of unused RAM from account {{account}} at market price. This transaction will incur a 0.5% fee on the proceeds which depend on market rates. + +

sellrex

+ +--- +spec_version: "0.2.0" +title: Sell REX Tokens in Exchange for EOS +summary: '{{nowrap from}} sells {{nowrap rex}} tokens' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from}} initiates a sell order to sell {{rex}} tokens at the market exchange rate during the time at which the order is ultimately executed. If {{from}} already has an open sell order in the sell queue, {{rex}} will be added to the amount of the sell order without change the position of the sell order within the queue. Once the sell order is executed, proceeds are added to {{from}}’s REX fund, the value of sold REX tokens is deducted from {{from}}’s vote stake, and votes are updated accordingly. + +Depending on the market conditions, it may not be possible to fill the entire sell order immediately. In such a case, the sell order is added to the back of a sell queue. A sell order at the front of the sell queue will automatically be executed when the market conditions allow for the entire order to be filled. Regardless of the market conditions, the system is designed to execute this sell order within 30 days. {{from}} can cancel the order at any time before it is filled using the cnclrexorder action. + +

setabi

+ +--- +spec_version: "0.2.0" +title: Deploy Contract ABI +summary: 'Deploy contract ABI on account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Deploy the ABI file associated with the contract on account {{account}}. + +

setacctcpu

+ +--- +spec_version: "0.2.0" +title: Explicitly Manage the CPU Quota of Account +summary: 'Explicitly manage the CPU bandwidth quota of account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{#if_has_value cpu_weight}} +Explicitly manage the CPU bandwidth quota of account {{account}} by pinning it to a weight of {{cpu_weight}}. + +{{account}} can stake and unstake, however, it will not change their CPU bandwidth quota as long as it remains pinned. +{{else}} +Unpin the CPU bandwidth quota of account {{account}}. The CPU bandwidth quota of {{account}} will be driven by the current tokens staked for CPU bandwidth by {{account}}. +{{/if_has_value}} + +

setacctnet

+ +--- +spec_version: "0.2.0" +title: Explicitly Manage the NET Quota of Account +summary: 'Explicitly manage the NET bandwidth quota of account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{#if_has_value net_weight}} +Explicitly manage the network bandwidth quota of account {{account}} by pinning it to a weight of {{net_weight}}. + +{{account}} can stake and unstake, however, it will not change their NET bandwidth quota as long as it remains pinned. +{{else}} +Unpin the NET bandwidth quota of account {{account}}. The NET bandwidth quota of {{account}} will be driven by the current tokens staked for NET bandwidth by {{account}}. +{{/if_has_value}} + +

setacctram

+ +--- +spec_version: "0.2.0" +title: Explicitly Manage the RAM Quota of Account +summary: 'Explicitly manage the RAM quota of account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{#if_has_value ram_bytes}} +Explicitly manage the RAM quota of account {{account}} by pinning it to {{ram_bytes}} bytes. + +{{account}} can buy and sell RAM, however, it will not change their RAM quota as long as it remains pinned. +{{else}} +Unpin the RAM quota of account {{account}}. The RAM quota of {{account}} will be driven by the current RAM holdings of {{account}}. +{{/if_has_value}} + +

setalimits

+ +--- +spec_version: "0.2.0" +title: Adjust Resource Limits of Account +summary: 'Adjust resource limits of account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} updates {{account}}’s resource limits to have a RAM quota of {{ram_bytes}} bytes, a NET bandwidth quota of {{net_weight}} and a CPU bandwidth quota of {{cpu_weight}}. + +

setcode

+ +--- +spec_version: "0.2.0" +title: Deploy Contract Code +summary: 'Deploy contract code on account {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Deploy compiled contract code to the account {{account}}. + +

setparams

+ +--- +spec_version: "0.2.0" +title: Set System Parameters +summary: 'Set System Parameters' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} sets system parameters to: +{{to_json params}} + +

setpriv

+ +--- +spec_version: "0.2.0" +title: Make an Account Privileged or Unprivileged +summary: '{{#if is_priv}}Make {{nowrap account}} privileged{{else}}Remove privileged status of {{nowrap account}}{{/if}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{#if is_priv}} +{{$action.account}} makes {{account}} privileged. +{{else}} +{{$action.account}} removes privileged status of {{account}}. +{{/if}} + +

setram

+ +--- +spec_version: "0.2.0" +title: Configure the Available RAM +summary: 'Configure the available RAM' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} configures the available RAM to {{max_ram_size}} bytes. + +

setramrate

+ +--- +spec_version: "0.2.0" +title: Set the Rate of Increase of RAM +summary: 'Set the rate of increase of RAM per block' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} sets the rate of increase of RAM to {{bytes_per_block}} bytes/block. + +

setrex

+ +--- +spec_version: "0.2.0" +title: Adjust REX Pool Virtual Balance +summary: 'Adjust REX Pool Virtual Balance' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} adjusts REX loan rate by setting REX pool virtual balance to {{balance}}. No token transfer or issue is executed in this action. + +

undelegatebw

+ +--- +spec_version: "0.2.0" +title: Unstake Tokens for NET and/or CPU +summary: 'Unstake tokens for NET and/or CPU from {{nowrap receiver}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/resource.png#3830f1ce8cb07f7757dbcf383b1ec1b11914ac34a1f9d8b065f07600fa9dac19 +--- + +{{from}} unstakes from {{receiver}} {{unstake_net_quantity}} for NET bandwidth and {{unstake_cpu_quantity}} for CPU bandwidth. + +The sum of these two quantities will be removed from the vote weight of {{receiver}} and will be made available to {{from}} after an uninterrupted 3 day period without further unstaking by {{from}}. After the uninterrupted 3 day period passes, the system will attempt to automatically return the funds to {{from}}’s regular token balance. However, this automatic refund may occasionally fail which will then require {{from}} to manually claim the funds with the refund action. + +

unlinkauth

+ +--- +spec_version: "0.2.0" +title: Unlink Action from Permission +summary: '{{nowrap account}} unsets the minimum required permission for the {{#if type}}{{nowrap type}} action of the{{/if}} {{nowrap code}} contract' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +{{account}} removes the association between the {{#if type}}{{type}} action of the{{/if}} {{code}} contract and its minimum required permission. + +{{#if type}}{{else}}This will not remove any links explicitly associated to specific actions of {{code}}.{{/if}} + +

unregprod

+ +--- +spec_version: "0.2.0" +title: Unregister as a Block Producer Candidate +summary: '{{nowrap producer}} unregisters as a block producer candidate' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/voting.png#db28cd3db6e62d4509af3644ce7d377329482a14bb4bfaca2aa5f1400d8e8a84 +--- + +{{producer}} unregisters as a block producer candidate. {{producer}} account will retain its votes and those votes can change based on voter stake changes or votes removed from {{producer}}. However new voters will not be able to vote for {{producer}} while it remains unregistered. + +

unstaketorex

+ +--- +spec_version: "0.2.0" +title: Buy REX Tokens Using Staked Tokens +summary: '{{nowrap owner}} buys REX tokens in exchange for tokens currently staked to NET and/or CPU' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +{{from_net}} and {{from_cpu}} are withdrawn from {{receiver}}’s NET and CPU bandwidths respectively. These funds are used to purchase REX tokens at the current market exchange rate. In order for the action to succeed, {{owner}} must have voted for a proxy or at least 21 block producers. + +A sell order of the purchased amount can only be initiated after waiting for the maturity period of 4 to 5 days to pass. Even then, depending on the market conditions, the initiated sell order may not be executed immediately. + +

updateauth

+ +--- +spec_version: "0.2.0" +title: Modify Account Permission +summary: 'Add or update the {{nowrap permission}} permission of {{nowrap account}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/account.png#3d55a2fc3a5c20b456f5657faf666bc25ffd06f4836c5e8256f741149b0b294f +--- + +Modify, and create if necessary, the {{permission}} permission of {{account}} to have a parent permission of {{parent}} and the following authority: +{{to_json auth}} + +

updaterex

+ +--- +spec_version: "0.2.0" +title: Update REX Owner Vote Weight +summary: 'Update vote weight to current value of held REX tokens' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +Update vote weight of {{owner}} account to current value of held REX tokens. + +

updtrevision

+ +--- +spec_version: "0.2.0" +title: Update System Contract Revision Number +summary: 'Update system contract revision number' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{$action.account}} advances the system contract revision number to {{revision}}. + +

voteproducer

+ +--- +spec_version: "0.2.0" +title: Vote for Block Producers +summary: '{{nowrap voter}} votes for {{#if proxy}}the proxy {{nowrap proxy}}{{else}}up to 30 block producer candidates{{/if}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/voting.png#db28cd3db6e62d4509af3644ce7d377329482a14bb4bfaca2aa5f1400d8e8a84 +--- + +{{#if proxy}} +{{voter}} votes for the proxy {{proxy}}. +At the time of voting the full weight of voter’s staked (CPU + NET) tokens will be cast towards each of the producers voted by {{proxy}}. +{{else}} +{{voter}} votes for the following block producer candidates: + +{{#each producers}} + + {{this}} +{{/each}} + +At the time of voting the full weight of voter’s staked (CPU + NET) tokens will be cast towards each of the above producers. +{{/if}} + +

withdraw

+ +--- +spec_version: "0.2.0" +title: Withdraw from REX Fund +summary: 'Withdraw {{nowrap amount}} from {{nowrap owner}}’s REX fund by transferring to {{owner}}’s liquid balance' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/rex.png#d229837fa62a464b9c71e06060aa86179adf0b3f4e3b8c4f9702f4f4b0c340a8 +--- + +Withdraws {{amount}} from {{owner}}’s REX fund and transfer them to {{owner}}’s liquid balance. diff --git a/scripts/cdt/build/contracts/eosio.token/eosio.token.abi b/scripts/cdt/build/contracts/eosio.token/eosio.token.abi new file mode 100644 index 00000000000..d054da763f9 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.token/eosio.token.abi @@ -0,0 +1,185 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "account", + "base": "", + "fields": [ + { + "name": "balance", + "type": "asset" + } + ] + }, + { + "name": "close", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "symbol", + "type": "symbol" + } + ] + }, + { + "name": "create", + "base": "", + "fields": [ + { + "name": "issuer", + "type": "name" + }, + { + "name": "maximum_supply", + "type": "asset" + } + ] + }, + { + "name": "currency_stats", + "base": "", + "fields": [ + { + "name": "supply", + "type": "asset" + }, + { + "name": "max_supply", + "type": "asset" + }, + { + "name": "issuer", + "type": "name" + } + ] + }, + { + "name": "issue", + "base": "", + "fields": [ + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "open", + "base": "", + "fields": [ + { + "name": "owner", + "type": "name" + }, + { + "name": "symbol", + "type": "symbol" + }, + { + "name": "ram_payer", + "type": "name" + } + ] + }, + { + "name": "retire", + "base": "", + "fields": [ + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + }, + { + "name": "transfer", + "base": "", + "fields": [ + { + "name": "from", + "type": "name" + }, + { + "name": "to", + "type": "name" + }, + { + "name": "quantity", + "type": "asset" + }, + { + "name": "memo", + "type": "string" + } + ] + } + ], + "actions": [ + { + "name": "close", + "type": "close", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Close Token Balance\nsummary: 'Close {{nowrap owner}}’s zero quantity balance'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654\n---\n\n{{owner}} agrees to close their zero quantity balance for the {{symbol_to_symbol_code symbol}} token.\n\nRAM will be refunded to the RAM payer of the {{symbol_to_symbol_code symbol}} token balance for {{owner}}." + }, + { + "name": "create", + "type": "create", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Create New Token\nsummary: 'Create a new token'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654\n---\n\n{{$action.account}} agrees to create a new token with symbol {{asset_to_symbol_code maximum_supply}} to be managed by {{issuer}}.\n\nThis action will not result any any tokens being issued into circulation.\n\n{{issuer}} will be allowed to issue tokens into circulation, up to a maximum supply of {{maximum_supply}}.\n\nRAM will deducted from {{$action.account}}’s resources to create the necessary records." + }, + { + "name": "issue", + "type": "issue", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Issue Tokens into Circulation\nsummary: 'Issue {{nowrap quantity}} into circulation and transfer into {{nowrap to}}’s account'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654\n---\n\nThe token manager agrees to issue {{quantity}} into circulation, and transfer it into {{to}}’s account.\n\n{{#if memo}}There is a memo attached to the transfer stating:\n{{memo}}\n{{/if}}\n\nIf {{to}} does not have a balance for {{asset_to_symbol_code quantity}}, or the token manager does not have a balance for {{asset_to_symbol_code quantity}}, the token manager will be designated as the RAM payer of the {{asset_to_symbol_code quantity}} token balance for {{to}}. As a result, RAM will be deducted from the token manager’s resources to create the necessary records.\n\nThis action does not allow the total quantity to exceed the max allowed supply of the token." + }, + { + "name": "open", + "type": "open", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Open Token Balance\nsummary: 'Open a zero quantity balance for {{nowrap owner}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654\n---\n\n{{ram_payer}} agrees to establish a zero quantity balance for {{owner}} for the {{symbol_to_symbol_code symbol}} token.\n\nIf {{owner}} does not have a balance for {{symbol_to_symbol_code symbol}}, {{ram_payer}} will be designated as the RAM payer of the {{symbol_to_symbol_code symbol}} token balance for {{owner}}. As a result, RAM will be deducted from {{ram_payer}}’s resources to create the necessary records." + }, + { + "name": "retire", + "type": "retire", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Remove Tokens from Circulation\nsummary: 'Remove {{nowrap quantity}} from circulation'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654\n---\n\nThe token manager agrees to remove {{quantity}} from circulation, taken from their own account.\n\n{{#if memo}} There is a memo attached to the action stating:\n{{memo}}\n{{/if}}" + }, + { + "name": "transfer", + "type": "transfer", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Transfer Tokens\nsummary: 'Send {{nowrap quantity}} from {{nowrap from}} to {{nowrap to}}'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/transfer.png#5dfad0df72772ee1ccc155e670c1d124f5c5122f1d5027565df38b418042d1dd\n---\n\n{{from}} agrees to send {{quantity}} to {{to}}.\n\n{{#if memo}}There is a memo attached to the transfer stating:\n{{memo}}\n{{/if}}\n\nIf {{from}} is not already the RAM payer of their {{asset_to_symbol_code quantity}} token balance, {{from}} will be designated as such. As a result, RAM will be deducted from {{from}}’s resources to refund the original RAM payer.\n\nIf {{to}} does not have a balance for {{asset_to_symbol_code quantity}}, {{from}} will be designated as the RAM payer of the {{asset_to_symbol_code quantity}} token balance for {{to}}. As a result, RAM will be deducted from {{from}}’s resources to create the necessary records." + } + ], + "tables": [ + { + "name": "accounts", + "type": "account", + "index_type": "i64", + "key_names": [], + "key_types": [] + }, + { + "name": "stat", + "type": "currency_stats", + "index_type": "i64", + "key_names": [], + "key_types": [] + } + ], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/scripts/cdt/build/contracts/eosio.token/eosio.token.wasm b/scripts/cdt/build/contracts/eosio.token/eosio.token.wasm new file mode 100755 index 0000000000000000000000000000000000000000..aabc68f85872d534703a8c78735fa3e0a1974d62 GIT binary patch literal 25839 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 C8iG;) literal 0 HcmV?d00001 diff --git a/scripts/cdt/build/contracts/eosio.token/ricardian/eosio.token.contracts.md b/scripts/cdt/build/contracts/eosio.token/ricardian/eosio.token.contracts.md new file mode 100644 index 00000000000..96648e6bab2 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.token/ricardian/eosio.token.contracts.md @@ -0,0 +1,95 @@ +

close

+ +--- +spec_version: "0.2.0" +title: Close Token Balance +summary: 'Close {{nowrap owner}}’s zero quantity balance' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654 +--- + +{{owner}} agrees to close their zero quantity balance for the {{symbol_to_symbol_code symbol}} token. + +RAM will be refunded to the RAM payer of the {{symbol_to_symbol_code symbol}} token balance for {{owner}}. + +

create

+ +--- +spec_version: "0.2.0" +title: Create New Token +summary: 'Create a new token' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654 +--- + +{{$action.account}} agrees to create a new token with symbol {{asset_to_symbol_code maximum_supply}} to be managed by {{issuer}}. + +This action will not result any any tokens being issued into circulation. + +{{issuer}} will be allowed to issue tokens into circulation, up to a maximum supply of {{maximum_supply}}. + +RAM will deducted from {{$action.account}}’s resources to create the necessary records. + +

issue

+ +--- +spec_version: "0.2.0" +title: Issue Tokens into Circulation +summary: 'Issue {{nowrap quantity}} into circulation and transfer into {{nowrap to}}’s account' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654 +--- + +The token manager agrees to issue {{quantity}} into circulation, and transfer it into {{to}}’s account. + +{{#if memo}}There is a memo attached to the transfer stating: +{{memo}} +{{/if}} + +If {{to}} does not have a balance for {{asset_to_symbol_code quantity}}, or the token manager does not have a balance for {{asset_to_symbol_code quantity}}, the token manager will be designated as the RAM payer of the {{asset_to_symbol_code quantity}} token balance for {{to}}. As a result, RAM will be deducted from the token manager’s resources to create the necessary records. + +This action does not allow the total quantity to exceed the max allowed supply of the token. + +

open

+ +--- +spec_version: "0.2.0" +title: Open Token Balance +summary: 'Open a zero quantity balance for {{nowrap owner}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654 +--- + +{{ram_payer}} agrees to establish a zero quantity balance for {{owner}} for the {{symbol_to_symbol_code symbol}} token. + +If {{owner}} does not have a balance for {{symbol_to_symbol_code symbol}}, {{ram_payer}} will be designated as the RAM payer of the {{symbol_to_symbol_code symbol}} token balance for {{owner}}. As a result, RAM will be deducted from {{ram_payer}}’s resources to create the necessary records. + +

retire

+ +--- +spec_version: "0.2.0" +title: Remove Tokens from Circulation +summary: 'Remove {{nowrap quantity}} from circulation' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/token.png#207ff68b0406eaa56618b08bda81d6a0954543f36adc328ab3065f31a5c5d654 +--- + +The token manager agrees to remove {{quantity}} from circulation, taken from their own account. + +{{#if memo}} There is a memo attached to the action stating: +{{memo}} +{{/if}} + +

transfer

+ +--- +spec_version: "0.2.0" +title: Transfer Tokens +summary: 'Send {{nowrap quantity}} from {{nowrap from}} to {{nowrap to}}' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/transfer.png#5dfad0df72772ee1ccc155e670c1d124f5c5122f1d5027565df38b418042d1dd +--- + +{{from}} agrees to send {{quantity}} to {{to}}. + +{{#if memo}}There is a memo attached to the transfer stating: +{{memo}} +{{/if}} + +If {{from}} is not already the RAM payer of their {{asset_to_symbol_code quantity}} token balance, {{from}} will be designated as such. As a result, RAM will be deducted from {{from}}’s resources to refund the original RAM payer. + +If {{to}} does not have a balance for {{asset_to_symbol_code quantity}}, {{from}} will be designated as the RAM payer of the {{asset_to_symbol_code quantity}} token balance for {{to}}. As a result, RAM will be deducted from {{from}}’s resources to create the necessary records. diff --git a/scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.abi b/scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.abi new file mode 100644 index 00000000000..9205094c113 --- /dev/null +++ b/scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.abi @@ -0,0 +1,129 @@ +{ + "____comment": "This file was generated with eosio-abigen. DO NOT EDIT ", + "version": "eosio::abi/1.1", + "types": [], + "structs": [ + { + "name": "action", + "base": "", + "fields": [ + { + "name": "account", + "type": "name" + }, + { + "name": "name", + "type": "name" + }, + { + "name": "authorization", + "type": "permission_level[]" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "exec", + "base": "", + "fields": [ + { + "name": "executer", + "type": "name" + }, + { + "name": "trx", + "type": "transaction" + } + ] + }, + { + "name": "extension", + "base": "", + "fields": [ + { + "name": "type", + "type": "uint16" + }, + { + "name": "data", + "type": "bytes" + } + ] + }, + { + "name": "permission_level", + "base": "", + "fields": [ + { + "name": "actor", + "type": "name" + }, + { + "name": "permission", + "type": "name" + } + ] + }, + { + "name": "transaction", + "base": "transaction_header", + "fields": [ + { + "name": "context_free_actions", + "type": "action[]" + }, + { + "name": "actions", + "type": "action[]" + }, + { + "name": "transaction_extensions", + "type": "extension[]" + } + ] + }, + { + "name": "transaction_header", + "base": "", + "fields": [ + { + "name": "expiration", + "type": "time_point_sec" + }, + { + "name": "ref_block_num", + "type": "uint16" + }, + { + "name": "ref_block_prefix", + "type": "uint32" + }, + { + "name": "max_net_usage_words", + "type": "varuint32" + }, + { + "name": "max_cpu_usage_ms", + "type": "uint8" + }, + { + "name": "delay_sec", + "type": "varuint32" + } + ] + } + ], + "actions": [ + { + "name": "exec", + "type": "exec", + "ricardian_contract": "---\nspec_version: \"0.2.0\"\ntitle: Privileged Execute\nsummary: '{{nowrap executer}} executes a transaction while bypassing authority checks'\nicon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e\n---\n\n{{executer}} executes the following transaction while bypassing authority checks:\n{{to_json trx}}\n\n{{$action.account}} must also authorize this action." + } + ], + "tables": [], + "ricardian_clauses": [], + "variants": [] +} \ No newline at end of file diff --git a/scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.wasm b/scripts/cdt/build/contracts/eosio.wrap/eosio.wrap.wasm new file mode 100755 index 0000000000000000000000000000000000000000..284575233879d671cffe179a3436a8080494f8c9 GIT binary patch literal 1173 zcmZ8gJ#Q015S`iC^VvB&StNv_6li^1PRT3gg2%Gw>B@SK%Ogozthq-MANMp;en>tB(! zI4S1yqnEVPN|_vIyuJ0I(b8nv*_v5u)!#gp?sUlExvt*zEje?ZbD66iP8;i+elC_u zmzM6uX-+-$rf-!qm8C}=w%jLI-|eWjWR7<52gYTHwhSep_c{!_d;g6LTiMC1WQwvL zbA1ivra5Z&R2z|?(7vwdVx?g1sWqtFf_&Exk)K$B{tCf%n)5z94ulL@zDieHa`49C-v|S2B>?Ev>kwQF|8tp?nkck?lZsLsE#YHquQjTYV@^ zh~!WJL?}k&XgXG#Ix-q5ZMjd`lRpj0KA9GHv8Bfy_}*T}-^VXM;#p$1vDAp|%FSK%v|Cy;jr6Q!Lh|?zO&;J*8%=tJ(^= zqClC{?UZhQI?WZ*S_O}EFS8mGv)DdC!(?EN(?D0DcWp6ZK*7U6B#zI@uAnz)r=gyN zK{U$91)H{wOGJP-G{Dtlp+*=G?&RBW5jV}Ku2>McKwpP++N~pf{U3b=exec + +--- +spec_version: "0.2.0" +title: Privileged Execute +summary: '{{nowrap executer}} executes a transaction while bypassing authority checks' +icon: http://127.0.0.1/ricardian_assets/eosio.contracts/icons/admin.png#9bf1cec664863bd6aaac0f814b235f8799fb02c850e9aa5da34e8a004bd6518e +--- + +{{executer}} executes the following transaction while bypassing authority checks: +{{to_json trx}} + +{{$action.account}} must also authorize this action. diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-configure b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-configure new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-done b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-done new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-download b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-download new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-install b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-install new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-mkdir b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-mkdir new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-patch b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-patch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-test b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-test new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-update b/scripts/cdt/build/contracts_project-prefix/src/contracts_project-stamp/contracts_project-update new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt b/scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt new file mode 100644 index 00000000000..92c0cc8a8dd --- /dev/null +++ b/scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt @@ -0,0 +1 @@ +cmd='/usr/bin/cmake;-DCMAKE_TOOLCHAIN_FILE=/usr/local/eosio.cdt/lib/cmake/eosio.cdt/EosioWasmToolchain.cmake;-GUnix Makefiles;' diff --git a/scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt.in b/scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt.in new file mode 100644 index 00000000000..b3f09efc8da --- /dev/null +++ b/scripts/cdt/build/contracts_project-prefix/tmp/contracts_project-cfgcmd.txt.in @@ -0,0 +1 @@ +cmd='@cmd@' diff --git a/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-download b/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-download new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-mkdir b/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-mkdir new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-patch b/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-patch new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-update b/scripts/cdt/build/contracts_unit_tests-prefix/src/contracts_unit_tests-stamp/contracts_unit_tests-update new file mode 100644 index 00000000000..e69de29bb2d diff --git a/scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt b/scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt new file mode 100644 index 00000000000..bfedd0541ff --- /dev/null +++ b/scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt @@ -0,0 +1 @@ +cmd='/usr/bin/cmake;-DCMAKE_BUILD_TYPE=;-DCMAKE_FRAMEWORK_PATH=;-DCMAKE_MODULE_PATH=/usr/local/eosio.cdt/lib/cmake/eosio.cdt;-DEOSIO_ROOT=;-DLLVM_DIR=;-GUnix Makefiles;' diff --git a/scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt.in b/scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt.in new file mode 100644 index 00000000000..b3f09efc8da --- /dev/null +++ b/scripts/cdt/build/contracts_unit_tests-prefix/tmp/contracts_unit_tests-cfgcmd.txt.in @@ -0,0 +1 @@ +cmd='@cmd@' diff --git a/scripts/node/automated_start.sh b/scripts/node/automated_start.sh new file mode 100755 index 00000000000..33e9511f510 --- /dev/null +++ b/scripts/node/automated_start.sh @@ -0,0 +1,13 @@ +#!/bin/bash +echo $1 +DATADIR="/node/blockchain" +# checking if the data directory exist - if not it means it should call genesis_start.sh to start the node +if [ -d "$DATADIR" ]; then + /node/start.sh "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + #checking if the exit status of the previous start call is an error, if so calling hard_start.sh + if [ "$?" = "1" ]; then + /node/hard_start.sh "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" + fi +else + /node/genesis_start.sh "$1" "$2" "$3" "$4" "$5" "$6" "$7" "$8" +fi \ No newline at end of file diff --git a/scripts/node/clean.sh b/scripts/node/clean.sh new file mode 100755 index 00000000000..25e9f1cbf7f --- /dev/null +++ b/scripts/node/clean.sh @@ -0,0 +1,3 @@ +#!/bin/bash +sudo rm -fr blockchain +ls -al \ No newline at end of file diff --git a/scripts/node/genesis_start.sh b/scripts/node/genesis_start.sh new file mode 100755 index 00000000000..ff8e25b2663 --- /dev/null +++ b/scripts/node/genesis_start.sh @@ -0,0 +1,36 @@ +#!/bin/bash +echo "in genesis_start.sh" +DATADIR="/node/blockchain" + +if [ ! -d $DATADIR ]; then +mkdir -p $DATADIR; +fi + +nodeos \ +--genesis-json "$DATADIR/../genesis.json" \ +--signature-provider $1=KEY:$2 \ +--plugin eosio::producer_plugin \ +--plugin eosio::producer_api_plugin \ +--plugin eosio::chain_plugin \ +--plugin eosio::chain_api_plugin \ +--plugin eosio::http_plugin \ +--data-dir $DATADIR"/data" \ +--blocks-dir $DATADIR"/blocks" \ +--config-dir $DATADIR"/config" \ +--producer-name $3 \ +--http-server-address 0.0.0.0:$4 \ +--p2p-listen-endpoint 0.0.0.0:$5 \ +--access-control-allow-origin=* \ +--filter-on=* \ +--contracts-console \ +--http-validate-host=false \ +--verbose-http-errors \ +--enable-stale-production \ +--p2p-peer-address localhost:9010 \ +--p2p-peer-address $6 \ +--p2p-peer-address $7 \ +--p2p-peer-address $8 \ +>> $DATADIR"/nodeos.log" 2>&1 & \ +echo $! > $DATADIR"/eosd.pid" +echo "endo of genesis_start" +tail -f "$DATADIR/nodeos.log" \ No newline at end of file diff --git a/scripts/node/hard_start.sh b/scripts/node/hard_start.sh new file mode 100644 index 00000000000..27e2585e75d --- /dev/null +++ b/scripts/node/hard_start.sh @@ -0,0 +1,35 @@ +#!/bin/bash +echo "in hard_start.sh" +DATADIR="/node/blockchain" + +if [ ! -d $DATADIR ]; then +mkdir -p $DATADIR; +fi + +nodeos \ +--signature-provider $1=KEY:$2 \ +--plugin eosio::producer_plugin \ +--plugin eosio::producer_api_plugin \ +--plugin eosio::chain_plugin \ +--plugin eosio::chain_api_plugin \ +--plugin eosio::http_plugin \ +--data-dir $DATADIR"/data" \ +--blocks-dir $DATADIR"/blocks" \ +--config-dir $DATADIR"/config" \ +--producer-name $3 \ +--http-server-address 0.0.0.0:$4 \ +--p2p-listen-endpoint 0.0.0.0:$5 \ +--access-control-allow-origin=* \ +--filter-on=* \ +--contracts-console \ +--http-validate-host=false \ +--verbose-http-errors \ +--enable-stale-production \ +--p2p-peer-address localhost:9010 \ +--p2p-peer-address $6 \ +--p2p-peer-address $7 \ +--p2p-peer-address $8 \ +--hard-replay-blockchain \ +>> $DATADIR"/nodeos.log" 2>&1 & \ +echo $! > $DATADIR"/eosd.pid" +tail -f "$DATADIR/nodeos.log" \ No newline at end of file diff --git a/scripts/node/start.sh b/scripts/node/start.sh new file mode 100755 index 00000000000..61305666160 --- /dev/null +++ b/scripts/node/start.sh @@ -0,0 +1,34 @@ +#!/bin/bash +echo "in start.sh" +DATADIR="/node/blockchain" + +if [ ! -d $DATADIR ]; then +mkdir -p $DATADIR; +fi + +nodeos \ +--signature-provider $1=KEY:$2 \ +--plugin eosio::producer_plugin \ +--plugin eosio::producer_api_plugin \ +--plugin eosio::chain_plugin \ +--plugin eosio::chain_api_plugin \ +--plugin eosio::http_plugin \ +--data-dir $DATADIR"/data" \ +--blocks-dir $DATADIR"/blocks" \ +--config-dir $DATADIR"/config" \ +--producer-name $3 \ +--http-server-address 0.0.0.0:$4 \ +--p2p-listen-endpoint 0.0.0.0:$5 \ +--access-control-allow-origin=* \ +--filter-on=* \ +--contracts-console \ +--http-validate-host=false \ +--verbose-http-errors \ +--enable-stale-production \ +--p2p-peer-address localhost:9010 \ +--p2p-peer-address $6 \ +--p2p-peer-address $7 \ +--p2p-peer-address $8 \ +>> $DATADIR"/nodeos.log" 2>&1 & \ +echo $! > $DATADIR"/eosd.pid" +tail -f "$DATADIR/nodeos.log" \ No newline at end of file diff --git a/scripts/node/stop.sh b/scripts/node/stop.sh new file mode 100644 index 00000000000..faa40cc0738 --- /dev/null +++ b/scripts/node/stop.sh @@ -0,0 +1,16 @@ +#!/bin/bash +DATADIR="./blockchain/" + +if [ -f $DATADIR"/eosd.pid" ]; then +pid=`cat $DATADIR"/eosd.pid"` +echo $pid +kill $pid +rm -r $DATADIR"/eosd.pid" +echo -ne "Stoping Node" +while true; do +[ ! -d "/proc/$pid/fd" ] && break +echo -ne "." +sleep 1 +done +echo -ne "\rNode Stopped. \n" +fi \ No newline at end of file From 65c587e9169d6814f7edae14035437dfa65ac1ed Mon Sep 17 00:00:00 2001 From: deeputg Date: Tue, 7 Jul 2020 12:13:35 +0530 Subject: [PATCH 2/4] docker documentation update --- README.md | 49 +++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index d28bcb1aae2..72479e216bb 100644 --- a/README.md +++ b/README.md @@ -36,6 +36,41 @@ cd DreamChainCore ./scripts/eosio_uninstall.sh ``` +6. To run the node + +``` +./scripts/node/automated_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 + +arg1 - public key of the node (must be created prior to this step) +arg2 - private key of the node(must be created prior to this step) +arg3 - account name (must be created prior to this step) +arg4 - nodeos running port (default:8888) +arg5 - p2p listening port (default:9010) +arg6 - ip address of another working node with its p2p port +arg7 - ip address of another working node with its p2p port +arg8 - ip address of another working node with its p2p port + +``` + +All the arguments are mandatory. + +7. If the node stoped working with a log - "hard restart required", please run the following command to restart the node + +``` +./scripts/node/hard_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 + +arg1 - public key of the node (must be of the stopped node) +arg2 - private key of the node(must be of the stopped node) +arg3 - account name (must be of the stopped node) +arg4 - nodeos running port (default:8888) +arg5 - p2p listening port (default:9010) +arg6 - ip address of another working node with its p2p port +arg7 - ip address of another working node with its p2p port +arg8 - ip address of another working node with its p2p port +``` + +All the arguments are mandatory. + ### Running on Docker 1. Clone this repo @@ -61,14 +96,16 @@ docker build dreamchain/node:latest . ``` docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/automated_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 -arg1 - public key of the node (must be of the stopped node) -arg2 - private key of the node(must be of the stopped node) -arg3 - account name (must be of the stopped node) +arg1 - public key of the node (must be created prior to this step) +arg2 - private key of the node(must be created prior to this step) +arg3 - account name (must be created prior to this step) arg4 - nodeos running port (default:8888) arg5 - p2p listening port (default:9010) arg6 - ip address of another working node with its p2p port arg7 - ip address of another working node with its p2p port arg8 - ip address of another working node with its p2p port + + ``` All the arguments are mandatory. @@ -78,9 +115,9 @@ All the arguments are mandatory. ``` docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/hard_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 -arg1 - public key of the node (must be created prior to this step) -arg2 - private key of the node(must be created prior to this step) -arg3 - account name (must be created prior to this step) +arg1 - public key of the node (must be of the stopped node) +arg2 - private key of the node(must be of the stopped node) +arg3 - account name (must be of the stopped node) arg4 - nodeos running port (default:8888) arg5 - p2p listening port (default:9010) arg6 - ip address of another working node with its p2p port From 8ef0ed327423153b81a7cac5e8b8d96af0fe4ce5 Mon Sep 17 00:00:00 2001 From: deeputg Date: Tue, 7 Jul 2020 12:17:48 +0530 Subject: [PATCH 3/4] docker documentation updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 72479e216bb..6672f557d21 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ cd DreamChainCore docker build dreamchain/node:latest . ``` -4. run the docker image by running the following command +4. run the docker image by running the following command (make sure you are in DreamChainCore/scripts/node directory) ``` docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/automated_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 @@ -110,7 +110,7 @@ arg8 - ip address of another working node with its p2p port All the arguments are mandatory. -4. If the node stoped working with a log - "hard restart required", please run the following command to restart the node +4. If the node stoped working with a log - "hard restart required", please run the following command to restart the node (make sure you are in DreamChainCore/scripts/node directory) ``` docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/hard_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 From 505a3a16b4224b8f5af691c6bbc959b461049318 Mon Sep 17 00:00:00 2001 From: deeputg Date: Tue, 7 Jul 2020 12:19:00 +0530 Subject: [PATCH 4/4] docker documentation updates --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 6672f557d21..5d80f87f8e1 100644 --- a/README.md +++ b/README.md @@ -91,7 +91,7 @@ cd DreamChainCore docker build dreamchain/node:latest . ``` -4. run the docker image by running the following command (make sure you are in DreamChainCore/scripts/node directory) +4. run the docker image by running the following command (make sure you are in `DreamChainCore/scripts/node` directory) ``` docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/automated_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8 @@ -110,7 +110,7 @@ arg8 - ip address of another working node with its p2p port All the arguments are mandatory. -4. If the node stoped working with a log - "hard restart required", please run the following command to restart the node (make sure you are in DreamChainCore/scripts/node directory) +4. If the node stoped working with a log - "hard restart required", please run the following command to restart the node (make sure you are in `DreamChainCore/scripts/node` directory) ``` docker run -d -v `pwd`:/node/ -p 8888:8888 -p 9010:9010 dreamchain/node:latest /node/hard_start.sh arg1 arg2 arg3 arg4 arg5 arg6 arg7 arg8