├── .DS_Store ├── .eslintignore ├── .eslintrc.json ├── .github └── dependabot.yml ├── .gitignore ├── .gitpod.Dockerfile ├── .gitpod.yml ├── .prettierrc.yaml ├── .theia └── settings.json ├── .travis.yml ├── .vscode └── settings.json ├── LICENSE ├── README-gitpod.md ├── README-installation-notes.md ├── README.md ├── README_ZH.md ├── cluster-devnet.env ├── cluster-mainnet-beta.env ├── cluster-testnet.env ├── package-lock.json ├── package.json ├── src ├── .DS_Store └── program-rust │ ├── .gitignore │ ├── Cargo.lock │ ├── Cargo.toml │ ├── Xargo.toml │ ├── src │ └── lib.rs │ └── tests │ └── lib.rs └── tsconfig.json /.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsoneaday/solana-example-helloworld/b2d94236a509caefa565d1b8bf800930f9338545/.DS_Store -------------------------------------------------------------------------------- /.eslintignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | -------------------------------------------------------------------------------- /.eslintrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "root": true, 3 | "env": { 4 | "node": true, 5 | "browser": true 6 | }, 7 | "extends": [ 8 | "eslint:recommended", 9 | "plugin:@typescript-eslint/eslint-recommended", 10 | "plugin:@typescript-eslint/recommended", 11 | "plugin:@typescript-eslint/recommended-requiring-type-checking", 12 | "prettier", 13 | "prettier/@typescript-eslint" 14 | ], 15 | "parser": "@typescript-eslint/parser", 16 | "parserOptions": { 17 | "ecmaVersion": 2020, 18 | "parser": "babel-eslint", 19 | "project": "./tsconfig.json", 20 | "sourceType": "module" 21 | }, 22 | "plugins": [ 23 | "@typescript-eslint", 24 | "prettier" 25 | ], 26 | "rules": { 27 | "no-console": 0, 28 | "semi": 0, 29 | "@typescript-eslint/no-explicit-any": 0 30 | } 31 | } 32 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | updates: 3 | - package-ecosystem: npm 4 | directory: "/" 5 | schedule: 6 | interval: daily 7 | time: "01:00" 8 | timezone: America/Los_Angeles 9 | open-pull-requests-limit: 3 10 | ignore: 11 | - dependency-name: eslint-config-prettier 12 | versions: 13 | - "> 6.15.0" 14 | - dependency-name: eslint 15 | versions: 16 | - 7.25.0 17 | - dependency-name: "@typescript-eslint/parser" 18 | versions: 19 | - 4.14.1 20 | - 4.14.2 21 | - 4.15.0 22 | - 4.18.0 23 | - 4.19.0 24 | - 4.20.0 25 | - 4.21.0 26 | - dependency-name: "@types/eslint" 27 | versions: 28 | - 7.2.6 29 | - dependency-name: "@typescript-eslint/eslint-plugin" 30 | versions: 31 | - 4.14.1 32 | - 4.14.2 33 | - 4.15.0 34 | - dependency-name: "@types/prettier" 35 | versions: 36 | - 2.1.6 37 | - 2.2.0 38 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /node_modules 2 | *.sw[po] 3 | /.cargo 4 | /dist 5 | .env 6 | src/client/util/store 7 | test-ledger/ 8 | -------------------------------------------------------------------------------- /.gitpod.Dockerfile: -------------------------------------------------------------------------------- 1 | FROM gitpod/workspace-full 2 | 3 | RUN sh -c "$(curl -sSfL https://release.solana.com/v1.6.6/install)" 4 | RUN export PATH=~/.local/share/solana/install/active_release/bin:$PATH 5 | -------------------------------------------------------------------------------- /.gitpod.yml: -------------------------------------------------------------------------------- 1 | image: 2 | file: .gitpod.Dockerfile 3 | tasks: 4 | - init: | 5 | sh -c "$(curl -sSfL https://release.solana.com/v1.6.6/install)" 6 | export PATH=~/.local/share/solana/install/active_release/bin:$PATH 7 | npm install 8 | npm run build:program-rust 9 | solana config set --url localhost 10 | solana-keygen new --no-bip39-passphrase 11 | command: | 12 | gp open README-gitpod.md 13 | github: 14 | prebuilds: 15 | # enable for the master/default branch (defaults to true) 16 | master: true 17 | # enable for all branches in this repo (defaults to false) 18 | branches: false 19 | # enable for pull requests coming from this repo (defaults to true) 20 | pullRequests: true 21 | # add a check to pull requests (defaults to true) 22 | addCheck: true 23 | # add a "Review in Gitpod" button as a comment to pull requests (defaults to false) 24 | addComment: true 25 | ports: 26 | - port: 1024 27 | onOpen: ignore 28 | - port: 8899 29 | onOpen: ignore 30 | - port: 8900 31 | onOpen: ignore 32 | - port: 9900 33 | onOpen: ignore 34 | -------------------------------------------------------------------------------- /.prettierrc.yaml: -------------------------------------------------------------------------------- 1 | arrowParens: "avoid" 2 | bracketSpacing: false 3 | jsxBracketSameLine: false 4 | semi: true 5 | singleQuote: true 6 | tabWidth: 2 7 | trailingComma: "all" 8 | -------------------------------------------------------------------------------- /.theia/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "workbench.iconTheme": "theia-file-icons", 3 | "preview.openByDefault": true 4 | } -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | dist: bionic 2 | sudo: required 3 | language: rust 4 | services: 5 | - docker 6 | cache: 7 | cargo: true 8 | directories: 9 | - "~/.npm" 10 | notifications: 11 | email: false 12 | 13 | install: 14 | - rustup install nightly 15 | - cargo --version 16 | - docker --version 17 | - wget -O - https://apt.llvm.org/llvm-snapshot.gpg.key | sudo apt-key add - 18 | - sudo apt-add-repository "deb http://apt.llvm.org/bionic/ llvm-toolchain-bionic-10 main" 19 | - sudo apt-get update 20 | - sudo apt-get install -y clang-7 --allow-unauthenticated 21 | - sudo apt-get install -y openssl --allow-unauthenticated 22 | - sudo apt-get install -y libssl-dev --allow-unauthenticated 23 | - sudo apt-get install -y libssl1.1 --allow-unauthenticated 24 | - clang-7 --version 25 | - nvm install node 26 | - node --version 27 | - npm install 28 | - sh -c "$(curl -sSfL https://release.solana.com/v1.6.6/install)" 29 | - export PATH=~/.local/share/solana/install/active_release/bin:$PATH 30 | - solana-install info 31 | 32 | script: 33 | - solana-keygen new --no-bip39-passphrase 34 | - solana-test-validator --quiet & 35 | - npm run lint 36 | - npm run build:program-rust 37 | - npm run test:program-rust 38 | - cargo test-bpf --manifest-path=./src/program-rust/Cargo.toml 39 | - solana config set --url localhost 40 | - solana program deploy dist/program/helloworld.so 41 | - npm run start 42 | - npm run build:program-c 43 | - solana program deploy dist/program/helloworld.so 44 | - npm run start 45 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "window.zoomLevel": 1, 3 | "editor.formatOnSave": true, 4 | "editor.defaultFormatter": "esbenp.prettier-vscode", 5 | "git.ignoreLimitWarning": true 6 | } 7 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2018 Solana Labs, Inc 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README-gitpod.md: -------------------------------------------------------------------------------- 1 | [![Build status][travis-image]][travis-url] [![Gitpod 2 | Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/solana-labs/example-helloworld) 3 | 4 | 5 | [travis-image]: 6 | https://travis-ci.org/solana-labs/example-helloworld.svg?branch=master 7 | [travis-url]: https://travis-ci.org/solana-labs/example-helloworld 8 | 9 | # Hello world on Solana (Gitpod version) 10 | 11 | This project demonstrates how to use the [Solana Javascript 12 | API](https://github.com/solana-labs/solana-web3.js) to build, deploy, and 13 | interact with programs on the Solana blockchain. 14 | 15 | The project comprises of: 16 | 17 | * An on-chain hello world program 18 | * A client that can send a "hello" to an account and get back the number of 19 | times "hello" has been sent 20 | 21 | ## Table of Contents 22 | - [Hello world on Solana (Gitpod 23 | version)](#hello-world-on-solana-gitpod-version) 24 | - [Table of Contents](#table-of-contents) 25 | - [Quick Start](#quick-start) 26 | - [Expected output](#expected-output) 27 | - [Customizing the Program](#customizing-the-program) 28 | - [Learn about Solana](#learn-about-solana) 29 | - [Learn about the client](#learn-about-the-client) 30 | - [Learn about the on-chain program](#learn-about-the-on-chain-program) 31 | - [Expand your skills with advanced 32 | examples](#expand-your-skills-with-advanced-examples) 33 | 34 | ## Quick Start 35 | 36 | Using this example in Gitpod connects to the public Solana `devnet` cluster. Use 37 | the environment variable `CLUSTER` to choose a different Solana cluster. 38 | 39 | Run the client to load and interact with the on-chain program: 40 | ```bash 41 | $ npm run start 42 | ``` 43 | 44 | The remaining sections of this document point back to the non-Gitpod version of 45 | the README for more information. 46 | 47 | ### [Expected output](README.md#expected-output) 48 | 49 | ### [Customizing the Program](README.md#Customizing-the-Program) 50 | 51 | ## [Learn about Solana](README.md#learn-about-solana) 52 | 53 | ## [Learn about the client](README.md#learn-about-the-client) 54 | 55 | ## [Learn about the on-chain program](README.md#learn-about-the-on-chain-program) 56 | 57 | ## [Expand your skills with advanced examples](README.md#expand-your-skills-with-advanced-examples) -------------------------------------------------------------------------------- /README-installation-notes.md: -------------------------------------------------------------------------------- 1 | # Installation Notes 2 | if you are a first-time user of Rust, the notes below may help you to install 3 | some of the dependencies on a Mac or Linux workstation. 4 | 5 | ### Rust 6 | We suggest that you install Rust using the 'rustup' tool. Rustup will install 7 | the latest version of Rust, Cargo, and the other binaries used in Solana. 8 | 9 | Follow the instructions at [Installing 10 | Rust](https://www.rust-lang.org/tools/install). 11 | 12 | For Mac users, Homebrew is also an option. The Mac Homebrew command is `brew 13 | install rustup` and then `rustup-init`. See [Mac 14 | Setup](https://sourabhbajaj.com/mac-setup/Rust/) & [Installing 15 | Rust](https://www.rust-lang.org/tools/install) for more details. 16 | 17 | After installation, you should have `rustc`, `cargo`, & `rustup`. You should 18 | also have `~/.cargo/bin` in your PATH environment variable. 19 | 20 | ### NodeJS/NPM 21 | Fetch the `npm` dependencies, including `@solana/web3.js`, by running: 22 | ```bash 23 | $ npm install 24 | ``` 25 | 26 | ### Git Repository 27 | Clone the 'example-helloworld' repository into your development machine: 28 | ```bash 29 | $ cd /path/to/your/work/folder/ 30 | $ git clone https://github.com/solana-labs/example-helloworld.git 31 | $ cd example-helloworld 32 | ``` 33 | (If you plan to submit changes in a pull request, be sure to create a fork first 34 | and then clone your fork.) 35 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Updated By David Choi 2 | 3 | This is an updated version of Solana's example-helloworld sample app 4 | Based on youtube video https://youtu.be/gA7hFdq2h9Q 5 | -------------------------------------------------------------------------------- /README_ZH.md: -------------------------------------------------------------------------------- 1 |

2 | 3 | Solana 4 | 5 |

6 | 7 | [![Build status][travis-image]][travis-url] 8 | [![Gitpod Ready-to-Code](https://img.shields.io/badge/Gitpod-Ready--to--Code-blue?logo=gitpod)](https://gitpod.io/#https://github.com/solana-labs/example-helloworld) 9 | 10 | [travis-image]: https://travis-ci.org/solana-labs/example-helloworld.svg?branch=master 11 | [travis-url]: https://travis-ci.org/solana-labs/example-helloworld 12 | 13 | # Hello world on Solana 14 | 15 | 此專案將展示如何使用 [Solana Javascript API](https://github.com/solana-labs/solana-web3.js) 在 Solana 區塊鏈上和程式交互。 16 | 17 | 此專案包含: 18 | 19 | * 鏈上的 Hello World 程式 20 | * 可以向帳戶發送 `hello` 並獲取 `hello` 的發送次數。 21 | 22 | ## 翻譯 23 | - [英文](README.md) 24 | 25 | ## 目錄 26 | - [Hello world on Solana](#hello-world-on-solana) 27 | - [快速開始](#快速開始) 28 | - [啟動本地 Solana 集群](#啟動本地-solana-集群) 29 | - [安裝 npm 套件](#安裝-npm-套件) 30 | - [部署鏈上程式](#部署鏈上程式) 31 | - [啟動客戶端](#啟動客戶端) 32 | - [期望產出](#期望產出) 33 | - [沒有達到期望產出?](#沒有達到期望產出) 34 | - [自定義程式](#自定義程式) 35 | - [學習 Solana](#學習-solana) 36 | - [學習 Client](#學習-client) 37 | - [進入點](#進入點) 38 | - [建立與集群的連接](#建立與集群的連接) 39 | - [載入鏈上程式 Hello World(如果尚未加載)](#載入鏈上程式-hello-world如果尚未加載) 40 | - [發送 `Hello` 交易至鏈上](#發送-Hello-交易至鏈上) 41 | - [查詢使用過 `Hello` 交易的 Solana 帳戶](#查詢使用過-Hello-交易的-Solana-帳戶) 42 | - [學習鏈上程式](#學習鏈上程式) 43 | - [在 Solana 上編寫程式](#在-Solana-上編寫程式) 44 | - [指向公開 Solana 集群](#指向公開的-Solana-集群) 45 | - [透過高級的範例擴展你的技能](#透過高級的範例擴展你的技能) 46 | 47 | ## 快速開始 48 | 49 | [![Open in Gitpod](https://gitpod.io/button/open-in-gitpod.svg)](https://gitpod.io/#https://github.com/solana-labs/example-helloworld) 50 | 51 | 如果您決定在 Gitpod 中打開,請參考 [README-gitpod.md](README-gitpod.md),否則請繼續閱讀。 52 | 53 | 54 | 要創建和運行此範例,請確認並安裝以下套件 55 | 56 | - 安裝 node 57 | - 安裝 npm 58 | - 從 https://rustup.rs/ 安裝最新的 Rust 穩定版本 59 | - 從 https://docs.solana.com/cli/install-solana-cli-tools 安裝 v1.6.6 的 Solana 命令列管理工具 60 | 61 | 如果這是您第一次使用 Docker 或 Rust,這些 [安裝筆記](README-installation-notes.md) 可能對您有幫助。 62 | 63 | ### 配置命令列 64 | 65 | 1. 將命令列配置的 url 設置成 localhost 集群 66 | 67 | ```bash 68 | $ solana config set --url localhost 69 | ``` 70 | 71 | 2. 創建命令列使用的密鑰對 72 | 73 | 如果這是你第一次使用 solana 命令列,你先得生成一个新的密鑰對 74 | 75 | ```bash 76 | $ solana-keygen new 77 | ``` 78 | 79 | ### 啟動本地 Solana 集群 80 | 81 | 默認情況下,此範例連接到本地 Solana 集群。 82 | 83 | 啟動本地 Solana 集群: 84 | ```bash 85 | $ solana-test-validator 86 | ``` 87 | **注意: 如果你要用 Windows 的話,你得先設置 WSL,才能用 `solana-test-validator` 的工具** 88 | 89 | 關注交易日誌: 90 | ```bash 91 | $ solana logs 92 | ``` 93 | 94 | ### 安裝 npm 套件 95 | 96 | ```bash 97 | $ npm install 98 | ``` 99 | ### 構建鏈上程式 100 | 101 | 鏈上程式有 Rust 版本和 C 版本,最新的版本是運行範例時使用的版本。 102 | 103 | ```bash 104 | $ npm run build:program-rust 105 | ``` 106 | 107 | ```bash 108 | $ npm run build:program-c 109 | ``` 110 | 111 | ### 部署鏈上程式 112 | 113 | ```bash 114 | $ solana program deploy dist/program/helloworld.so 115 | ``` 116 | 117 | ### 啟動客戶端 118 | 119 | ```bash 120 | $ npm run start 121 | ``` 122 | 123 | ### 期望產出 124 | 125 | 公鑰將會有所不同: 126 | 127 | ```bash 128 | Let's say hello to a Solana account... 129 | Connection to cluster established: http://localhost:8899 { 'feature-set': 3714435735, 'solana-core': '1.6.6' } 130 | Using account AiT1QgeYaK86Lf9kudqKthQPCWwpG8vFA1bAAioBoF4X containing 0.00141872 SOL to pay for fees 131 | Using program Dro9uk45fxMcKWGb1eWALujbTssh6DW8mb4x8x3Eq5h6 132 | Creating account 8MBmHtJvxpKdYhdw6yPpedp6X6y2U9dCpdYaZJdmwV3A to say hello to 133 | Saying hello to 8MBmHtJvxpKdYhdw6yPpedp6X6y2U9dCpdYaZJdmwV3A 134 | 8MBmHtJvxpKdYhdw6yPpedp6X6y2U9dCpdYaZJdmwV3A has been greeted 1 times 135 | Success 136 | ``` 137 | 138 | #### 沒有達到期望產出? 139 | 140 | - 確認您已經[啟動了本地 Solana 集群](#start-local-solana-cluster),[構建](#構建鏈上程式) 并 [部署好了](#部署鏈上程式) 鏈上程式。 141 | - 集群的輸出日誌應包括程序日誌消息以及程式失敗的原因 142 | - `program log: ` 143 | - 運行 `solana logs` 檢查程式日誌找出程式失敗的原因。 144 | - ```bash 145 | Transaction executed in slot 5621: 146 | Signature: 4pya5iyvNfAZj9sVWHzByrxdKB84uA5sCxLceBwr9UyuETX2QwnKg56MgBKWSM4breVRzHmpb1EZQXFPPmJnEtsJ 147 | Status: Error processing Instruction 0: Program failed to complete 148 | Log Messages: 149 | Program G5bbS1ipWzqQhekkiCLn6u7Y1jJdnGK85ceSYLx2kKbA invoke [1] 150 | Program log: Hello World Rust program entrypoint 151 | Program G5bbS1ipWzqQhekkiCLn6u7Y1jJdnGK85ceSYLx2kKbA consumed 200000 of 200000 compute units 152 | Program failed to complete: exceeded maximum number of instructions allowed (200000) at instruction #334 153 | Program G5bbS1ipWzqQhekkiCLn6u7Y1jJdnGK85ceSYLx2kKbA failed: Program failed to complete 154 | 155 | ### 自定義程式 156 | 157 | 要自定義示例,請更改 `/src` 下的文件。如果您更改 `/src/program-rust` 或 `/src/program-c` 下的任何文件,你將需要[重新構建鏈上程式](#構建鏈上程式) 並 [重新部署鏈上程式](#部署鏈上程式)。 158 | 159 | 現在,當您重新運行 `npm run start` 時,您應該看到更改的結果。 160 | 161 | ## 學習 Solana 162 | 163 | [Solana 文件](https://docs.solana.com/)提供了有關 Solana 的更多消息並且所有的源代碼都在 [github](https://github.com/solana-labs/solana) 上。 164 | 165 | 更多的問題?在 [Discord](https://discordapp.com/invite/pquxPsq) 告訴我們。 166 | 167 | ## 學習 Client 168 | 169 | 此範例中的客戶端使用 JavaScript 語言撰寫: 170 | - [Solana web3.js SDK](https://github.com/solana-labs/solana-web3.js) 171 | - [Solana web3 API](https://solana-labs.github.io/solana-web3.js) 172 | 173 | ### 進入點 174 | 175 | [客戶端入口點](https://github.com/solana-labs/example-helloworld/blob/e936ab42e168f1939df0164d5996adf9ca635bd0/src/client/main.js#L14)做了四件事 176 | 177 | ### 建立與集群的連接 178 | 179 | 客戶端通過調用 [`establishConnection`](https://github.com/solana-labs/example-helloworld/blob/e936ab42e168f1939df0164d5996adf9ca635bd0/src/client/hello_world.js#L45) 與客戶端建立連接. 180 | 181 | ### Check if the helloworld on-chain program has been deployed 182 | 183 | The client loads the keypair of the deployed program from `./dist/program/helloworld-keypair.json` and uses 184 | the public key for the keypair to fetch the program account. If the program doesn't exist, the client halts 185 | with an error. If the program does exist, it will create a new account with the program assigned as its owner 186 | to store program state (number of hello's processed). 187 | 188 | ### 發送 `Hello` 交易至鏈上 189 | 190 | 客戶端將通過調用 [`sayHello`](https://github.com/solana-labs/example-helloworld/blob/e936ab42e168f1939df0164d5996adf9ca635bd0/src/client/hello_world.js#L121) 並向程式發送 `Hello` 交易。此交易包含一條非常簡單的指令,此指令主要呼叫 `helloworld` 程式的帳戶公鑰希望向 `greeter` 帳戶說 `Hello`。 191 | 192 | ### 查詢使用過 `Hello` 交易的 Solana 帳戶 193 | 194 | 客戶端每次對帳戶說 `Hello` 時,程式都會在 `greeter` 帳戶的數據中增加一個計數。客戶端查詢 `greeter` 帳戶的數據,並透過 [`reportHellos`](https://github.com/solana-labs/example-helloworld/blob/e936ab42e168f1939df0164d5996adf9ca635bd0/src/client/hello_world.js#L138.) 查詢此帳戶當前被訪問的次數。 195 | 196 | ## 學習鏈上程式 197 | 198 | [鏈上 HelloWorld 程式](/src/program-rust/Cargo.toml) 是一個 Rust 程式編譯成 [Berkley Packet Format (BPF)](https://en.wikipedia.org/wiki/Berkeley_Packet_Filter) 並儲存為[可執行和可鏈接格式(ELF)共享對象](https://en.wikipedia.org/wiki/Executable_and_Linkable_Format). 199 | 200 | 此程式是使用以下程式編寫: 201 | - [Solana Rust SDK](https://github.com/solana-labs/solana/tree/master/sdk) 202 | 203 | ### 在 Solana 上編寫程式 204 | 205 | 要了解有關 Solana 程式設計模型的更多訊息,請參閱[程式設計模型概述](https://docs.solana.com/developing/programming-model/overview)。 206 | 207 | 要了解有關在 Solana 上開發程式的更多訊息,請參閱[已部署程式概述](https://docs.solana.com/developing/deployed-programs/overview)。 208 | 209 | ## 指向公開的 Solana 集群 210 | 211 | Solana 有三個公開集群: 212 | 213 | - `devnet` - 啟用空投的開發者集群 214 | - `testnet` - Tour De Sol 沒有空投的測試集群 215 | - `mainnet-beta` - 主網集群 216 | 217 | 使用 Solana CLI 的 `solana` 指令去選擇集群 218 | 219 | 選擇 `devnet` 集群: 220 | ```bash 221 | $ solana config set --url devnet 222 | ``` 223 | 224 | 選擇 `local` 集群: 225 | ```bash 226 | $ solana config set --url localhost 227 | ``` 228 | 229 | ## 透過高級的範例擴展你的技能 230 | 231 | 還有更多的東西要學習。以下範例展示了更多高級功能,例如自定義錯誤、高級帳戶處理、數據序列化建議、基準測試...等。 232 | 233 | - [Programming Examples](https://github.com/solana-labs/solana-program-library/tree/master/examples) 234 | - [Token Program](https://github.com/solana-labs/solana-program-library/tree/master/token) 235 | - [Token Swap Program](https://github.com/solana-labs/solana-program-library/tree/master/token-swap) 236 | -------------------------------------------------------------------------------- /cluster-devnet.env: -------------------------------------------------------------------------------- 1 | LIVE=1 2 | CLUSTER=devnet 3 | -------------------------------------------------------------------------------- /cluster-mainnet-beta.env: -------------------------------------------------------------------------------- 1 | LIVE=1 2 | CLUSTER=mainnet-beta 3 | -------------------------------------------------------------------------------- /cluster-testnet.env: -------------------------------------------------------------------------------- 1 | LIVE=1 2 | CLUSTER=testnet 3 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "solana-example-helloworld", 3 | "version": "0.0.1", 4 | "description": "", 5 | "repository": { 6 | "type": "git", 7 | "url": "https://github.com/jsoneaday/solana-helloworld" 8 | }, 9 | "keywords": [], 10 | "author": "", 11 | "license": "MIT", 12 | "scripts": { 13 | "start": "ts-node src/client/main.ts", 14 | "start-with-test-validator": "start-server-and-test 'solana-test-validator --reset --quiet' http://localhost:8899/health start", 15 | "lint": "eslint --ext .ts src/client/* && prettier --check \"src/client/**/*.ts\"", 16 | "lint:fix": "eslint --ext .ts src/client/* --fix && prettier --write \"src/client/**/*.ts\"", 17 | "clean": "npm run clean:program-c && npm run clean:program-rust", 18 | "build:program-c": "V=1 make -C ./src/program-c helloworld", 19 | "clean:program-c": "V=1 make -C ./src/program-c clean", 20 | "build:program-rust": "cargo build-bpf --manifest-path=./src/program-rust/Cargo.toml --bpf-out-dir=dist/program", 21 | "clean:program-rust": "cargo clean --manifest-path=./src/program-rust/Cargo.toml && rm -rf ./dist", 22 | "test:program-rust": "cargo test-bpf --manifest-path=./src/program-rust/Cargo.toml", 23 | "pretty": "prettier --write '{,src/**/}*.ts'", 24 | "postinstall": "cargo update --manifest-path=src/program-rust/Cargo.toml" 25 | }, 26 | "dependencies": { 27 | "@solana/web3.js": "^1.7.0", 28 | "borsh": "^0.3.1", 29 | "dotenv": "8.2.0", 30 | "json-to-pretty-yaml": "^1.2.2", 31 | "mkdirp": "^1.0.4", 32 | "mz": "^2.7.0", 33 | "yaml": "^1.10.2" 34 | }, 35 | "devDependencies": { 36 | "@tsconfig/recommended": "^1.0.1", 37 | "@types/eslint": "^7.2.4", 38 | "@types/eslint-plugin-prettier": "^3.1.0", 39 | "@types/mkdirp": "^1.0.1", 40 | "@types/mz": "^2.7.2", 41 | "@types/prettier": "^2.1.5", 42 | "@types/yaml": "^1.9.7", 43 | "@typescript-eslint/eslint-plugin": "^4.6.0", 44 | "@typescript-eslint/parser": "^4.6.0", 45 | "eslint": "^7.12.1", 46 | "eslint-config-prettier": "^6.15.0", 47 | "eslint-plugin-prettier": "^3.1.4", 48 | "prettier": "^2.1.2", 49 | "start-server-and-test": "^1.11.6", 50 | "ts-node": "^9.0.0", 51 | "typescript": "^4.0.5" 52 | }, 53 | "engines": { 54 | "node": "12.x" 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /src/.DS_Store: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/jsoneaday/solana-example-helloworld/b2d94236a509caefa565d1b8bf800930f9338545/src/.DS_Store -------------------------------------------------------------------------------- /src/program-rust/.gitignore: -------------------------------------------------------------------------------- 1 | /target/ 2 | -------------------------------------------------------------------------------- /src/program-rust/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | [[package]] 4 | name = "Inflector" 5 | version = "0.11.4" 6 | source = "registry+https://github.com/rust-lang/crates.io-index" 7 | checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" 8 | dependencies = [ 9 | "lazy_static", 10 | "regex", 11 | ] 12 | 13 | [[package]] 14 | name = "addr2line" 15 | version = "0.14.1" 16 | source = "registry+https://github.com/rust-lang/crates.io-index" 17 | checksum = "a55f82cfe485775d02112886f4169bde0c5894d75e79ead7eafe7e40a25e45f7" 18 | dependencies = [ 19 | "gimli", 20 | ] 21 | 22 | [[package]] 23 | name = "adler" 24 | version = "1.0.2" 25 | source = "registry+https://github.com/rust-lang/crates.io-index" 26 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 27 | 28 | [[package]] 29 | name = "ahash" 30 | version = "0.4.7" 31 | source = "registry+https://github.com/rust-lang/crates.io-index" 32 | checksum = "739f4a8db6605981345c5654f3a85b056ce52f37a39d34da03f25bf2151ea16e" 33 | 34 | [[package]] 35 | name = "aho-corasick" 36 | version = "0.7.18" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 39 | dependencies = [ 40 | "memchr", 41 | ] 42 | 43 | [[package]] 44 | name = "anyhow" 45 | version = "1.0.40" 46 | source = "registry+https://github.com/rust-lang/crates.io-index" 47 | checksum = "28b2cd92db5cbd74e8e5028f7e27dd7aa3090e89e4f2a197cc7c8dfb69c7063b" 48 | 49 | [[package]] 50 | name = "arrayref" 51 | version = "0.3.6" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" 54 | 55 | [[package]] 56 | name = "arrayvec" 57 | version = "0.5.2" 58 | source = "registry+https://github.com/rust-lang/crates.io-index" 59 | checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" 60 | 61 | [[package]] 62 | name = "ascii" 63 | version = "0.9.3" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "eab1c04a571841102f5345a8fc0f6bb3d31c315dec879b5c6e42e40ce7ffa34e" 66 | 67 | [[package]] 68 | name = "assert_matches" 69 | version = "1.5.0" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | checksum = "9b34d609dfbaf33d6889b2b7106d3ca345eacad44200913df5ba02bfd31d2ba9" 72 | 73 | [[package]] 74 | name = "async-trait" 75 | version = "0.1.50" 76 | source = "registry+https://github.com/rust-lang/crates.io-index" 77 | checksum = "0b98e84bbb4cbcdd97da190ba0c58a1bb0de2c1fdf67d159e192ed766aeca722" 78 | dependencies = [ 79 | "proc-macro2 1.0.26", 80 | "quote 1.0.9", 81 | "syn 1.0.71", 82 | ] 83 | 84 | [[package]] 85 | name = "atty" 86 | version = "0.2.14" 87 | source = "registry+https://github.com/rust-lang/crates.io-index" 88 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 89 | dependencies = [ 90 | "hermit-abi", 91 | "libc", 92 | "winapi 0.3.9", 93 | ] 94 | 95 | [[package]] 96 | name = "autocfg" 97 | version = "1.0.1" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" 100 | 101 | [[package]] 102 | name = "backtrace" 103 | version = "0.3.57" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "78ed203b9ba68b242c62b3fb7480f589dd49829be1edb3fe8fc8b4ffda2dcb8d" 106 | dependencies = [ 107 | "addr2line", 108 | "cfg-if 1.0.0", 109 | "libc", 110 | "miniz_oxide", 111 | "object", 112 | "rustc-demangle", 113 | "serde", 114 | ] 115 | 116 | [[package]] 117 | name = "base64" 118 | version = "0.12.3" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "3441f0f7b02788e948e47f457ca01f1d7e6d92c693bc132c22b087d3141c03ff" 121 | 122 | [[package]] 123 | name = "base64" 124 | version = "0.13.0" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 127 | 128 | [[package]] 129 | name = "bincode" 130 | version = "1.3.3" 131 | source = "registry+https://github.com/rust-lang/crates.io-index" 132 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 133 | dependencies = [ 134 | "serde", 135 | ] 136 | 137 | [[package]] 138 | name = "bitflags" 139 | version = "1.2.1" 140 | source = "registry+https://github.com/rust-lang/crates.io-index" 141 | checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693" 142 | 143 | [[package]] 144 | name = "blake3" 145 | version = "0.3.7" 146 | source = "registry+https://github.com/rust-lang/crates.io-index" 147 | checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" 148 | dependencies = [ 149 | "arrayref", 150 | "arrayvec", 151 | "cc", 152 | "cfg-if 0.1.10", 153 | "constant_time_eq", 154 | "crypto-mac 0.8.0", 155 | "digest 0.9.0", 156 | ] 157 | 158 | [[package]] 159 | name = "block-buffer" 160 | version = "0.7.3" 161 | source = "registry+https://github.com/rust-lang/crates.io-index" 162 | checksum = "c0940dc441f31689269e10ac70eb1002a3a1d3ad1390e030043662eb7fe4688b" 163 | dependencies = [ 164 | "block-padding 0.1.5", 165 | "byte-tools", 166 | "byteorder", 167 | "generic-array 0.12.4", 168 | ] 169 | 170 | [[package]] 171 | name = "block-buffer" 172 | version = "0.9.0" 173 | source = "registry+https://github.com/rust-lang/crates.io-index" 174 | checksum = "4152116fd6e9dadb291ae18fc1ec3575ed6d84c29642d97890f4b4a3417297e4" 175 | dependencies = [ 176 | "block-padding 0.2.1", 177 | "generic-array 0.14.4", 178 | ] 179 | 180 | [[package]] 181 | name = "block-padding" 182 | version = "0.1.5" 183 | source = "registry+https://github.com/rust-lang/crates.io-index" 184 | checksum = "fa79dedbb091f449f1f39e53edf88d5dbe95f895dae6135a8d7b881fb5af73f5" 185 | dependencies = [ 186 | "byte-tools", 187 | ] 188 | 189 | [[package]] 190 | name = "block-padding" 191 | version = "0.2.1" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "8d696c370c750c948ada61c69a0ee2cbbb9c50b1019ddb86d9317157a99c2cae" 194 | 195 | [[package]] 196 | name = "borsh" 197 | version = "0.7.2" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "b42b13fa9bf62be34702e5ee4526aff22530ae22fe34a0c4290d30d5e4e782e6" 200 | dependencies = [ 201 | "borsh-derive 0.7.2", 202 | ] 203 | 204 | [[package]] 205 | name = "borsh" 206 | version = "0.8.2" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "09a7111f797cc721407885a323fb071636aee57f750b1a4ddc27397eba168a74" 209 | dependencies = [ 210 | "borsh-derive 0.8.2", 211 | "hashbrown", 212 | ] 213 | 214 | [[package]] 215 | name = "borsh-derive" 216 | version = "0.7.2" 217 | source = "registry+https://github.com/rust-lang/crates.io-index" 218 | checksum = "e6aaa45f8eec26e4bf71e7e5492cf53a91591af8f871f422d550e7cc43f6b927" 219 | dependencies = [ 220 | "borsh-derive-internal 0.7.2", 221 | "borsh-schema-derive-internal 0.7.2", 222 | "proc-macro2 1.0.26", 223 | "syn 1.0.71", 224 | ] 225 | 226 | [[package]] 227 | name = "borsh-derive" 228 | version = "0.8.2" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "307f3740906bac2c118a8122fe22681232b244f1369273e45f1156b45c43d2dd" 231 | dependencies = [ 232 | "borsh-derive-internal 0.8.2", 233 | "borsh-schema-derive-internal 0.8.2", 234 | "proc-macro-crate", 235 | "proc-macro2 1.0.26", 236 | "syn 1.0.71", 237 | ] 238 | 239 | [[package]] 240 | name = "borsh-derive-internal" 241 | version = "0.7.2" 242 | source = "registry+https://github.com/rust-lang/crates.io-index" 243 | checksum = "61621b9d3cca65cc54e2583db84ef912d59ae60d2f04ba61bc0d7fc57556bda2" 244 | dependencies = [ 245 | "proc-macro2 1.0.26", 246 | "quote 1.0.9", 247 | "syn 1.0.71", 248 | ] 249 | 250 | [[package]] 251 | name = "borsh-derive-internal" 252 | version = "0.8.2" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "d2104c73179359431cc98e016998f2f23bc7a05bc53e79741bcba705f30047bc" 255 | dependencies = [ 256 | "proc-macro2 1.0.26", 257 | "quote 1.0.9", 258 | "syn 1.0.71", 259 | ] 260 | 261 | [[package]] 262 | name = "borsh-schema-derive-internal" 263 | version = "0.7.2" 264 | source = "registry+https://github.com/rust-lang/crates.io-index" 265 | checksum = "85b38abfda570837b0949c2c7ebd31417e15607861c23eacb2f668c69f6f3bf7" 266 | dependencies = [ 267 | "proc-macro2 1.0.26", 268 | "quote 1.0.9", 269 | "syn 1.0.71", 270 | ] 271 | 272 | [[package]] 273 | name = "borsh-schema-derive-internal" 274 | version = "0.8.2" 275 | source = "registry+https://github.com/rust-lang/crates.io-index" 276 | checksum = "ae29eb8418fcd46f723f8691a2ac06857d31179d33d2f2d91eb13967de97c728" 277 | dependencies = [ 278 | "proc-macro2 1.0.26", 279 | "quote 1.0.9", 280 | "syn 1.0.71", 281 | ] 282 | 283 | [[package]] 284 | name = "bs58" 285 | version = "0.3.1" 286 | source = "registry+https://github.com/rust-lang/crates.io-index" 287 | checksum = "476e9cd489f9e121e02ffa6014a8ef220ecb15c05ed23fc34cca13925dc283fb" 288 | 289 | [[package]] 290 | name = "bumpalo" 291 | version = "3.6.1" 292 | source = "registry+https://github.com/rust-lang/crates.io-index" 293 | checksum = "63396b8a4b9de3f4fdfb320ab6080762242f66a8ef174c49d8e19b674db4cdbe" 294 | 295 | [[package]] 296 | name = "bv" 297 | version = "0.11.1" 298 | source = "registry+https://github.com/rust-lang/crates.io-index" 299 | checksum = "8834bb1d8ee5dc048ee3124f2c7c1afcc6bc9aed03f11e9dfd8c69470a5db340" 300 | dependencies = [ 301 | "feature-probe", 302 | "serde", 303 | ] 304 | 305 | [[package]] 306 | name = "byte-tools" 307 | version = "0.3.1" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "e3b5ca7a04898ad4bcd41c90c5285445ff5b791899bb1b0abdd2a2aa791211d7" 310 | 311 | [[package]] 312 | name = "byteorder" 313 | version = "1.4.3" 314 | source = "registry+https://github.com/rust-lang/crates.io-index" 315 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 316 | 317 | [[package]] 318 | name = "bytes" 319 | version = "0.4.12" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "206fdffcfa2df7cbe15601ef46c813fce0965eb3286db6b56c583b814b51c81c" 322 | dependencies = [ 323 | "byteorder", 324 | "either", 325 | "iovec", 326 | ] 327 | 328 | [[package]] 329 | name = "bytes" 330 | version = "1.0.1" 331 | source = "registry+https://github.com/rust-lang/crates.io-index" 332 | checksum = "b700ce4376041dcd0a327fd0097c41095743c4c8af8887265942faf1100bd040" 333 | 334 | [[package]] 335 | name = "bzip2" 336 | version = "0.3.3" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "42b7c3cbf0fa9c1b82308d57191728ca0256cb821220f4e2fd410a72ade26e3b" 339 | dependencies = [ 340 | "bzip2-sys", 341 | "libc", 342 | ] 343 | 344 | [[package]] 345 | name = "bzip2-sys" 346 | version = "0.1.10+1.0.8" 347 | source = "registry+https://github.com/rust-lang/crates.io-index" 348 | checksum = "17fa3d1ac1ca21c5c4e36a97f3c3eb25084576f6fc47bf0139c1123434216c6c" 349 | dependencies = [ 350 | "cc", 351 | "libc", 352 | "pkg-config", 353 | ] 354 | 355 | [[package]] 356 | name = "cc" 357 | version = "1.0.49" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "e450b8da92aa6f274e7c6437692f9f2ce6d701fb73bacfcf87897b3f89a4c20e" 360 | dependencies = [ 361 | "jobserver", 362 | "num_cpus", 363 | ] 364 | 365 | [[package]] 366 | name = "cfg-if" 367 | version = "0.1.10" 368 | source = "registry+https://github.com/rust-lang/crates.io-index" 369 | checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" 370 | 371 | [[package]] 372 | name = "cfg-if" 373 | version = "1.0.0" 374 | source = "registry+https://github.com/rust-lang/crates.io-index" 375 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 376 | 377 | [[package]] 378 | name = "chrono" 379 | version = "0.4.19" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | checksum = "670ad68c9088c2a963aaa298cb369688cf3f9465ce5e2d4ca10e6e0098a1ce73" 382 | dependencies = [ 383 | "libc", 384 | "num-integer", 385 | "num-traits", 386 | "serde", 387 | "time", 388 | "winapi 0.3.9", 389 | ] 390 | 391 | [[package]] 392 | name = "chrono-humanize" 393 | version = "0.1.2" 394 | source = "registry+https://github.com/rust-lang/crates.io-index" 395 | checksum = "8164ae3089baf04ff71f32aeb70213283dcd236dce8bc976d00b17a458f5f71c" 396 | dependencies = [ 397 | "chrono", 398 | ] 399 | 400 | [[package]] 401 | name = "cloudabi" 402 | version = "0.0.3" 403 | source = "registry+https://github.com/rust-lang/crates.io-index" 404 | checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" 405 | dependencies = [ 406 | "bitflags", 407 | ] 408 | 409 | [[package]] 410 | name = "combine" 411 | version = "3.8.1" 412 | source = "registry+https://github.com/rust-lang/crates.io-index" 413 | checksum = "da3da6baa321ec19e1cc41d31bf599f00c783d0517095cdaf0332e3fe8d20680" 414 | dependencies = [ 415 | "ascii", 416 | "byteorder", 417 | "either", 418 | "memchr", 419 | "unreachable", 420 | ] 421 | 422 | [[package]] 423 | name = "constant_time_eq" 424 | version = "0.1.5" 425 | source = "registry+https://github.com/rust-lang/crates.io-index" 426 | checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" 427 | 428 | [[package]] 429 | name = "cpuid-bool" 430 | version = "0.1.2" 431 | source = "registry+https://github.com/rust-lang/crates.io-index" 432 | checksum = "8aebca1129a03dc6dc2b127edd729435bbc4a37e1d5f4d7513165089ceb02634" 433 | 434 | [[package]] 435 | name = "crc32fast" 436 | version = "1.2.1" 437 | source = "registry+https://github.com/rust-lang/crates.io-index" 438 | checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" 439 | dependencies = [ 440 | "cfg-if 1.0.0", 441 | ] 442 | 443 | [[package]] 444 | name = "crossbeam-channel" 445 | version = "0.4.4" 446 | source = "registry+https://github.com/rust-lang/crates.io-index" 447 | checksum = "b153fe7cbef478c567df0f972e02e6d736db11affe43dfc9c56a9374d1adfb87" 448 | dependencies = [ 449 | "crossbeam-utils 0.7.2", 450 | "maybe-uninit", 451 | ] 452 | 453 | [[package]] 454 | name = "crossbeam-channel" 455 | version = "0.5.1" 456 | source = "registry+https://github.com/rust-lang/crates.io-index" 457 | checksum = "06ed27e177f16d65f0f0c22a213e17c696ace5dd64b14258b52f9417ccb52db4" 458 | dependencies = [ 459 | "cfg-if 1.0.0", 460 | "crossbeam-utils 0.8.4", 461 | ] 462 | 463 | [[package]] 464 | name = "crossbeam-deque" 465 | version = "0.7.3" 466 | source = "registry+https://github.com/rust-lang/crates.io-index" 467 | checksum = "9f02af974daeee82218205558e51ec8768b48cf524bd01d550abe5573a608285" 468 | dependencies = [ 469 | "crossbeam-epoch 0.8.2", 470 | "crossbeam-utils 0.7.2", 471 | "maybe-uninit", 472 | ] 473 | 474 | [[package]] 475 | name = "crossbeam-deque" 476 | version = "0.8.0" 477 | source = "registry+https://github.com/rust-lang/crates.io-index" 478 | checksum = "94af6efb46fef72616855b036a624cf27ba656ffc9be1b9a3c931cfc7749a9a9" 479 | dependencies = [ 480 | "cfg-if 1.0.0", 481 | "crossbeam-epoch 0.9.4", 482 | "crossbeam-utils 0.8.4", 483 | ] 484 | 485 | [[package]] 486 | name = "crossbeam-epoch" 487 | version = "0.8.2" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | checksum = "058ed274caafc1f60c4997b5fc07bf7dc7cca454af7c6e81edffe5f33f70dace" 490 | dependencies = [ 491 | "autocfg", 492 | "cfg-if 0.1.10", 493 | "crossbeam-utils 0.7.2", 494 | "lazy_static", 495 | "maybe-uninit", 496 | "memoffset 0.5.6", 497 | "scopeguard", 498 | ] 499 | 500 | [[package]] 501 | name = "crossbeam-epoch" 502 | version = "0.9.4" 503 | source = "registry+https://github.com/rust-lang/crates.io-index" 504 | checksum = "52fb27eab85b17fbb9f6fd667089e07d6a2eb8743d02639ee7f6a7a7729c9c94" 505 | dependencies = [ 506 | "cfg-if 1.0.0", 507 | "crossbeam-utils 0.8.4", 508 | "lazy_static", 509 | "memoffset 0.6.3", 510 | "scopeguard", 511 | ] 512 | 513 | [[package]] 514 | name = "crossbeam-queue" 515 | version = "0.2.3" 516 | source = "registry+https://github.com/rust-lang/crates.io-index" 517 | checksum = "774ba60a54c213d409d5353bda12d49cd68d14e45036a285234c8d6f91f92570" 518 | dependencies = [ 519 | "cfg-if 0.1.10", 520 | "crossbeam-utils 0.7.2", 521 | "maybe-uninit", 522 | ] 523 | 524 | [[package]] 525 | name = "crossbeam-utils" 526 | version = "0.7.2" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "c3c7c73a2d1e9fc0886a08b93e98eb643461230d5f1925e4036204d5f2e261a8" 529 | dependencies = [ 530 | "autocfg", 531 | "cfg-if 0.1.10", 532 | "lazy_static", 533 | ] 534 | 535 | [[package]] 536 | name = "crossbeam-utils" 537 | version = "0.8.4" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "4feb231f0d4d6af81aed15928e58ecf5816aa62a2393e2c82f46973e92a9a278" 540 | dependencies = [ 541 | "autocfg", 542 | "cfg-if 1.0.0", 543 | "lazy_static", 544 | ] 545 | 546 | [[package]] 547 | name = "crunchy" 548 | version = "0.2.2" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 551 | 552 | [[package]] 553 | name = "crypto-mac" 554 | version = "0.7.0" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "4434400df11d95d556bac068ddfedd482915eb18fe8bea89bc80b6e4b1c179e5" 557 | dependencies = [ 558 | "generic-array 0.12.4", 559 | "subtle 1.0.0", 560 | ] 561 | 562 | [[package]] 563 | name = "crypto-mac" 564 | version = "0.8.0" 565 | source = "registry+https://github.com/rust-lang/crates.io-index" 566 | checksum = "b584a330336237c1eecd3e94266efb216c56ed91225d634cb2991c5f3fd1aeab" 567 | dependencies = [ 568 | "generic-array 0.14.4", 569 | "subtle 2.4.0", 570 | ] 571 | 572 | [[package]] 573 | name = "crypto-mac" 574 | version = "0.10.0" 575 | source = "registry+https://github.com/rust-lang/crates.io-index" 576 | checksum = "4857fd85a0c34b3c3297875b747c1e02e06b6a0ea32dd892d8192b9ce0813ea6" 577 | dependencies = [ 578 | "generic-array 0.14.4", 579 | "subtle 2.4.0", 580 | ] 581 | 582 | [[package]] 583 | name = "curve25519-dalek" 584 | version = "2.1.2" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "434e1720189a637d44fe464f4df1e6eb900b4835255b14354497c78af37d9bb8" 587 | dependencies = [ 588 | "byteorder", 589 | "digest 0.8.1", 590 | "rand_core 0.5.1", 591 | "subtle 2.4.0", 592 | "zeroize", 593 | ] 594 | 595 | [[package]] 596 | name = "curve25519-dalek" 597 | version = "3.1.0" 598 | source = "registry+https://github.com/rust-lang/crates.io-index" 599 | checksum = "639891fde0dbea823fc3d798a0fdf9d2f9440a42d64a78ab3488b0ca025117b3" 600 | dependencies = [ 601 | "byteorder", 602 | "digest 0.9.0", 603 | "rand_core 0.5.1", 604 | "subtle 2.4.0", 605 | "zeroize", 606 | ] 607 | 608 | [[package]] 609 | name = "dashmap" 610 | version = "4.0.2" 611 | source = "registry+https://github.com/rust-lang/crates.io-index" 612 | checksum = "e77a43b28d0668df09411cb0bc9a8c2adc40f9a048afe863e05fd43251e8e39c" 613 | dependencies = [ 614 | "cfg-if 1.0.0", 615 | "num_cpus", 616 | "rayon", 617 | ] 618 | 619 | [[package]] 620 | name = "digest" 621 | version = "0.8.1" 622 | source = "registry+https://github.com/rust-lang/crates.io-index" 623 | checksum = "f3d0c8c8752312f9713efd397ff63acb9f85585afbf179282e720e7704954dd5" 624 | dependencies = [ 625 | "generic-array 0.12.4", 626 | ] 627 | 628 | [[package]] 629 | name = "digest" 630 | version = "0.9.0" 631 | source = "registry+https://github.com/rust-lang/crates.io-index" 632 | checksum = "d3dd60d1080a57a05ab032377049e0591415d2b31afd7028356dbf3cc6dcb066" 633 | dependencies = [ 634 | "generic-array 0.14.4", 635 | ] 636 | 637 | [[package]] 638 | name = "dir-diff" 639 | version = "0.3.2" 640 | source = "registry+https://github.com/rust-lang/crates.io-index" 641 | checksum = "2860407d7d7e2e004bb2128510ad9e8d669e76fa005ccf567977b5d71b8b4a0b" 642 | dependencies = [ 643 | "walkdir", 644 | ] 645 | 646 | [[package]] 647 | name = "ed25519" 648 | version = "1.1.1" 649 | source = "registry+https://github.com/rust-lang/crates.io-index" 650 | checksum = "8d0860415b12243916284c67a9be413e044ee6668247b99ba26d94b2bc06c8f6" 651 | dependencies = [ 652 | "serde", 653 | "signature", 654 | ] 655 | 656 | [[package]] 657 | name = "ed25519-dalek" 658 | version = "1.0.1" 659 | source = "registry+https://github.com/rust-lang/crates.io-index" 660 | checksum = "c762bae6dcaf24c4c84667b8579785430908723d5c889f469d76a41d59cc7a9d" 661 | dependencies = [ 662 | "curve25519-dalek 3.1.0", 663 | "ed25519", 664 | "rand 0.7.3", 665 | "serde", 666 | "serde_bytes", 667 | "sha2 0.9.3", 668 | "zeroize", 669 | ] 670 | 671 | [[package]] 672 | name = "educe" 673 | version = "0.4.16" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "2b6f648515c65974bcb893b286a5c4a35adfdcfbfd03c1bbf1108f40feec65d7" 676 | dependencies = [ 677 | "enum-ordinalize", 678 | "proc-macro2 1.0.26", 679 | "quote 1.0.9", 680 | "syn 1.0.71", 681 | ] 682 | 683 | [[package]] 684 | name = "either" 685 | version = "1.6.1" 686 | source = "registry+https://github.com/rust-lang/crates.io-index" 687 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 688 | 689 | [[package]] 690 | name = "encoding_rs" 691 | version = "0.8.28" 692 | source = "registry+https://github.com/rust-lang/crates.io-index" 693 | checksum = "80df024fbc5ac80f87dfef0d9f5209a252f2a497f7f42944cff24d8253cac065" 694 | dependencies = [ 695 | "cfg-if 1.0.0", 696 | ] 697 | 698 | [[package]] 699 | name = "enum-ordinalize" 700 | version = "3.1.10" 701 | source = "registry+https://github.com/rust-lang/crates.io-index" 702 | checksum = "0b166c9e378360dd5a6666a9604bb4f54ae0cac39023ffbac425e917a2a04fef" 703 | dependencies = [ 704 | "num-bigint", 705 | "num-traits", 706 | "proc-macro2 1.0.26", 707 | "quote 1.0.9", 708 | "syn 1.0.71", 709 | ] 710 | 711 | [[package]] 712 | name = "env_logger" 713 | version = "0.8.3" 714 | source = "registry+https://github.com/rust-lang/crates.io-index" 715 | checksum = "17392a012ea30ef05a610aa97dfb49496e71c9f676b27879922ea5bdf60d9d3f" 716 | dependencies = [ 717 | "atty", 718 | "humantime", 719 | "log", 720 | "regex", 721 | "termcolor", 722 | ] 723 | 724 | [[package]] 725 | name = "fake-simd" 726 | version = "0.1.2" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | checksum = "e88a8acf291dafb59c2d96e8f59828f3838bb1a70398823ade51a84de6a6deed" 729 | 730 | [[package]] 731 | name = "feature-probe" 732 | version = "0.1.1" 733 | source = "registry+https://github.com/rust-lang/crates.io-index" 734 | checksum = "835a3dc7d1ec9e75e2b5fb4ba75396837112d2060b03f7d43bc1897c7f7211da" 735 | 736 | [[package]] 737 | name = "filetime" 738 | version = "0.2.14" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "1d34cfa13a63ae058bfa601fe9e313bbdb3746427c1459185464ce0fcf62e1e8" 741 | dependencies = [ 742 | "cfg-if 1.0.0", 743 | "libc", 744 | "redox_syscall 0.2.7", 745 | "winapi 0.3.9", 746 | ] 747 | 748 | [[package]] 749 | name = "flate2" 750 | version = "1.0.20" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" 753 | dependencies = [ 754 | "cfg-if 1.0.0", 755 | "crc32fast", 756 | "libc", 757 | "miniz_oxide", 758 | ] 759 | 760 | [[package]] 761 | name = "fnv" 762 | version = "1.0.7" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 765 | 766 | [[package]] 767 | name = "form_urlencoded" 768 | version = "1.0.1" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" 771 | dependencies = [ 772 | "matches", 773 | "percent-encoding", 774 | ] 775 | 776 | [[package]] 777 | name = "fs_extra" 778 | version = "1.2.0" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "2022715d62ab30faffd124d40b76f4134a550a87792276512b18d63272333394" 781 | 782 | [[package]] 783 | name = "fuchsia-zircon" 784 | version = "0.3.3" 785 | source = "registry+https://github.com/rust-lang/crates.io-index" 786 | checksum = "2e9763c69ebaae630ba35f74888db465e49e259ba1bc0eda7d06f4a067615d82" 787 | dependencies = [ 788 | "bitflags", 789 | "fuchsia-zircon-sys", 790 | ] 791 | 792 | [[package]] 793 | name = "fuchsia-zircon-sys" 794 | version = "0.3.3" 795 | source = "registry+https://github.com/rust-lang/crates.io-index" 796 | checksum = "3dcaa9ae7725d12cdb85b3ad99a434db70b468c09ded17e012d86b5c1010f7a7" 797 | 798 | [[package]] 799 | name = "futures" 800 | version = "0.1.31" 801 | source = "registry+https://github.com/rust-lang/crates.io-index" 802 | checksum = "3a471a38ef8ed83cd6e40aa59c1ffe17db6855c18e3604d9c4ed8c08ebc28678" 803 | 804 | [[package]] 805 | name = "futures" 806 | version = "0.3.14" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "a9d5813545e459ad3ca1bff9915e9ad7f1a47dc6a91b627ce321d5863b7dd253" 809 | dependencies = [ 810 | "futures-channel", 811 | "futures-core", 812 | "futures-executor", 813 | "futures-io", 814 | "futures-sink", 815 | "futures-task", 816 | "futures-util", 817 | ] 818 | 819 | [[package]] 820 | name = "futures-channel" 821 | version = "0.3.14" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "ce79c6a52a299137a6013061e0cf0e688fce5d7f1bc60125f520912fdb29ec25" 824 | dependencies = [ 825 | "futures-core", 826 | "futures-sink", 827 | ] 828 | 829 | [[package]] 830 | name = "futures-core" 831 | version = "0.3.14" 832 | source = "registry+https://github.com/rust-lang/crates.io-index" 833 | checksum = "098cd1c6dda6ca01650f1a37a794245eb73181d0d4d4e955e2f3c37db7af1815" 834 | 835 | [[package]] 836 | name = "futures-executor" 837 | version = "0.3.14" 838 | source = "registry+https://github.com/rust-lang/crates.io-index" 839 | checksum = "10f6cb7042eda00f0049b1d2080aa4b93442997ee507eb3828e8bd7577f94c9d" 840 | dependencies = [ 841 | "futures-core", 842 | "futures-task", 843 | "futures-util", 844 | ] 845 | 846 | [[package]] 847 | name = "futures-io" 848 | version = "0.3.14" 849 | source = "registry+https://github.com/rust-lang/crates.io-index" 850 | checksum = "365a1a1fb30ea1c03a830fdb2158f5236833ac81fa0ad12fe35b29cddc35cb04" 851 | 852 | [[package]] 853 | name = "futures-macro" 854 | version = "0.3.14" 855 | source = "registry+https://github.com/rust-lang/crates.io-index" 856 | checksum = "668c6733a182cd7deb4f1de7ba3bf2120823835b3bcfbeacf7d2c4a773c1bb8b" 857 | dependencies = [ 858 | "proc-macro-hack", 859 | "proc-macro2 1.0.26", 860 | "quote 1.0.9", 861 | "syn 1.0.71", 862 | ] 863 | 864 | [[package]] 865 | name = "futures-sink" 866 | version = "0.3.14" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "5c5629433c555de3d82861a7a4e3794a4c40040390907cfbfd7143a92a426c23" 869 | 870 | [[package]] 871 | name = "futures-task" 872 | version = "0.3.14" 873 | source = "registry+https://github.com/rust-lang/crates.io-index" 874 | checksum = "ba7aa51095076f3ba6d9a1f702f74bd05ec65f555d70d2033d55ba8d69f581bc" 875 | 876 | [[package]] 877 | name = "futures-util" 878 | version = "0.3.14" 879 | source = "registry+https://github.com/rust-lang/crates.io-index" 880 | checksum = "3c144ad54d60f23927f0a6b6d816e4271278b64f005ad65e4e35291d2de9c025" 881 | dependencies = [ 882 | "futures-channel", 883 | "futures-core", 884 | "futures-io", 885 | "futures-macro", 886 | "futures-sink", 887 | "futures-task", 888 | "memchr", 889 | "pin-project-lite", 890 | "pin-utils", 891 | "proc-macro-hack", 892 | "proc-macro-nested", 893 | "slab", 894 | ] 895 | 896 | [[package]] 897 | name = "generic-array" 898 | version = "0.12.4" 899 | source = "registry+https://github.com/rust-lang/crates.io-index" 900 | checksum = "ffdf9f34f1447443d37393cc6c2b8313aebddcd96906caf34e54c68d8e57d7bd" 901 | dependencies = [ 902 | "typenum", 903 | ] 904 | 905 | [[package]] 906 | name = "generic-array" 907 | version = "0.14.4" 908 | source = "registry+https://github.com/rust-lang/crates.io-index" 909 | checksum = "501466ecc8a30d1d3b7fc9229b122b2ce8ed6e9d9223f1138d4babb253e51817" 910 | dependencies = [ 911 | "serde", 912 | "typenum", 913 | "version_check", 914 | ] 915 | 916 | [[package]] 917 | name = "gethostname" 918 | version = "0.2.1" 919 | source = "registry+https://github.com/rust-lang/crates.io-index" 920 | checksum = "e692e296bfac1d2533ef168d0b60ff5897b8b70a4009276834014dd8924cc028" 921 | dependencies = [ 922 | "libc", 923 | "winapi 0.3.9", 924 | ] 925 | 926 | [[package]] 927 | name = "getrandom" 928 | version = "0.1.16" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" 931 | dependencies = [ 932 | "cfg-if 1.0.0", 933 | "libc", 934 | "wasi 0.9.0+wasi-snapshot-preview1", 935 | ] 936 | 937 | [[package]] 938 | name = "getrandom" 939 | version = "0.2.2" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "c9495705279e7140bf035dde1f6e750c162df8b625267cd52cc44e0b156732c8" 942 | dependencies = [ 943 | "cfg-if 1.0.0", 944 | "libc", 945 | "wasi 0.10.0+wasi-snapshot-preview1", 946 | ] 947 | 948 | [[package]] 949 | name = "gimli" 950 | version = "0.23.0" 951 | source = "registry+https://github.com/rust-lang/crates.io-index" 952 | checksum = "f6503fe142514ca4799d4c26297c4248239fe8838d827db6bd6065c6ed29a6ce" 953 | 954 | [[package]] 955 | name = "glob" 956 | version = "0.3.0" 957 | source = "registry+https://github.com/rust-lang/crates.io-index" 958 | checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" 959 | 960 | [[package]] 961 | name = "goblin" 962 | version = "0.3.4" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "669cdc3826f69a51d3f8fc3f86de81c2378110254f678b8407977736122057a4" 965 | dependencies = [ 966 | "log", 967 | "plain", 968 | "scroll", 969 | ] 970 | 971 | [[package]] 972 | name = "h2" 973 | version = "0.3.3" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "825343c4eef0b63f541f8903f395dc5beb362a979b5799a84062527ef1e37726" 976 | dependencies = [ 977 | "bytes 1.0.1", 978 | "fnv", 979 | "futures-core", 980 | "futures-sink", 981 | "futures-util", 982 | "http", 983 | "indexmap", 984 | "slab", 985 | "tokio 1.5.0", 986 | "tokio-util", 987 | "tracing", 988 | ] 989 | 990 | [[package]] 991 | name = "hash32" 992 | version = "0.1.1" 993 | source = "registry+https://github.com/rust-lang/crates.io-index" 994 | checksum = "d4041af86e63ac4298ce40e5cca669066e75b6f1aa3390fe2561ffa5e1d9f4cc" 995 | dependencies = [ 996 | "byteorder", 997 | ] 998 | 999 | [[package]] 1000 | name = "hashbrown" 1001 | version = "0.9.1" 1002 | source = "registry+https://github.com/rust-lang/crates.io-index" 1003 | checksum = "d7afe4a420e3fe79967a00898cc1f4db7c8a49a9333a29f8a4bd76a253d5cd04" 1004 | dependencies = [ 1005 | "ahash", 1006 | ] 1007 | 1008 | [[package]] 1009 | name = "hermit-abi" 1010 | version = "0.1.18" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | checksum = "322f4de77956e22ed0e5032c359a0f1273f1f7f0d79bfa3b8ffbc730d7fbcc5c" 1013 | dependencies = [ 1014 | "libc", 1015 | ] 1016 | 1017 | [[package]] 1018 | name = "hex" 1019 | version = "0.4.3" 1020 | source = "registry+https://github.com/rust-lang/crates.io-index" 1021 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1022 | 1023 | [[package]] 1024 | name = "hmac" 1025 | version = "0.7.1" 1026 | source = "registry+https://github.com/rust-lang/crates.io-index" 1027 | checksum = "5dcb5e64cda4c23119ab41ba960d1e170a774c8e4b9d9e6a9bc18aabf5e59695" 1028 | dependencies = [ 1029 | "crypto-mac 0.7.0", 1030 | "digest 0.8.1", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "hmac" 1035 | version = "0.10.1" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "c1441c6b1e930e2817404b5046f1f989899143a12bf92de603b69f4e0aee1e15" 1038 | dependencies = [ 1039 | "crypto-mac 0.10.0", 1040 | "digest 0.9.0", 1041 | ] 1042 | 1043 | [[package]] 1044 | name = "hmac-drbg" 1045 | version = "0.2.0" 1046 | source = "registry+https://github.com/rust-lang/crates.io-index" 1047 | checksum = "c6e570451493f10f6581b48cdd530413b63ea9e780f544bfd3bdcaa0d89d1a7b" 1048 | dependencies = [ 1049 | "digest 0.8.1", 1050 | "generic-array 0.12.4", 1051 | "hmac 0.7.1", 1052 | ] 1053 | 1054 | [[package]] 1055 | name = "http" 1056 | version = "0.2.4" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | checksum = "527e8c9ac747e28542699a951517aa9a6945af506cd1f2e1b53a576c17b6cc11" 1059 | dependencies = [ 1060 | "bytes 1.0.1", 1061 | "fnv", 1062 | "itoa", 1063 | ] 1064 | 1065 | [[package]] 1066 | name = "http-body" 1067 | version = "0.4.1" 1068 | source = "registry+https://github.com/rust-lang/crates.io-index" 1069 | checksum = "5dfb77c123b4e2f72a2069aeae0b4b4949cc7e966df277813fc16347e7549737" 1070 | dependencies = [ 1071 | "bytes 1.0.1", 1072 | "http", 1073 | "pin-project-lite", 1074 | ] 1075 | 1076 | [[package]] 1077 | name = "httparse" 1078 | version = "1.4.0" 1079 | source = "registry+https://github.com/rust-lang/crates.io-index" 1080 | checksum = "4a1ce40d6fc9764887c2fdc7305c3dcc429ba11ff981c1509416afd5697e4437" 1081 | 1082 | [[package]] 1083 | name = "httpdate" 1084 | version = "1.0.0" 1085 | source = "registry+https://github.com/rust-lang/crates.io-index" 1086 | checksum = "05842d0d43232b23ccb7060ecb0f0626922c21f30012e97b767b30afd4a5d4b9" 1087 | 1088 | [[package]] 1089 | name = "humantime" 1090 | version = "2.1.0" 1091 | source = "registry+https://github.com/rust-lang/crates.io-index" 1092 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 1093 | 1094 | [[package]] 1095 | name = "hyper" 1096 | version = "0.14.7" 1097 | source = "registry+https://github.com/rust-lang/crates.io-index" 1098 | checksum = "1e5f105c494081baa3bf9e200b279e27ec1623895cd504c7dbef8d0b080fcf54" 1099 | dependencies = [ 1100 | "bytes 1.0.1", 1101 | "futures-channel", 1102 | "futures-core", 1103 | "futures-util", 1104 | "h2", 1105 | "http", 1106 | "http-body", 1107 | "httparse", 1108 | "httpdate", 1109 | "itoa", 1110 | "pin-project", 1111 | "socket2", 1112 | "tokio 1.5.0", 1113 | "tower-service", 1114 | "tracing", 1115 | "want", 1116 | ] 1117 | 1118 | [[package]] 1119 | name = "hyper-rustls" 1120 | version = "0.22.1" 1121 | source = "registry+https://github.com/rust-lang/crates.io-index" 1122 | checksum = "5f9f7a97316d44c0af9b0301e65010573a853a9fc97046d7331d7f6bc0fd5a64" 1123 | dependencies = [ 1124 | "futures-util", 1125 | "hyper", 1126 | "log", 1127 | "rustls", 1128 | "tokio 1.5.0", 1129 | "tokio-rustls", 1130 | "webpki", 1131 | ] 1132 | 1133 | [[package]] 1134 | name = "idna" 1135 | version = "0.2.3" 1136 | source = "registry+https://github.com/rust-lang/crates.io-index" 1137 | checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" 1138 | dependencies = [ 1139 | "matches", 1140 | "unicode-bidi", 1141 | "unicode-normalization", 1142 | ] 1143 | 1144 | [[package]] 1145 | name = "indexmap" 1146 | version = "1.6.2" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | checksum = "824845a0bf897a9042383849b02c1bc219c2383772efcd5c6f9766fa4b81aef3" 1149 | dependencies = [ 1150 | "autocfg", 1151 | "hashbrown", 1152 | ] 1153 | 1154 | [[package]] 1155 | name = "instant" 1156 | version = "0.1.9" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "61124eeebbd69b8190558df225adf7e4caafce0d743919e5d6b19652314ec5ec" 1159 | dependencies = [ 1160 | "cfg-if 1.0.0", 1161 | ] 1162 | 1163 | [[package]] 1164 | name = "iovec" 1165 | version = "0.1.4" 1166 | source = "registry+https://github.com/rust-lang/crates.io-index" 1167 | checksum = "b2b3ea6ff95e175473f8ffe6a7eb7c00d054240321b84c57051175fe3c1e075e" 1168 | dependencies = [ 1169 | "libc", 1170 | ] 1171 | 1172 | [[package]] 1173 | name = "ipnet" 1174 | version = "2.3.0" 1175 | source = "registry+https://github.com/rust-lang/crates.io-index" 1176 | checksum = "47be2f14c678be2fdcab04ab1171db51b2762ce6f0a8ee87c8dd4a04ed216135" 1177 | 1178 | [[package]] 1179 | name = "itertools" 1180 | version = "0.9.0" 1181 | source = "registry+https://github.com/rust-lang/crates.io-index" 1182 | checksum = "284f18f85651fe11e8a991b2adb42cb078325c996ed026d994719efcfca1d54b" 1183 | dependencies = [ 1184 | "either", 1185 | ] 1186 | 1187 | [[package]] 1188 | name = "itoa" 1189 | version = "0.4.7" 1190 | source = "registry+https://github.com/rust-lang/crates.io-index" 1191 | checksum = "dd25036021b0de88a0aff6b850051563c6516d0bf53f8638938edbb9de732736" 1192 | 1193 | [[package]] 1194 | name = "jemalloc-ctl" 1195 | version = "0.3.3" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "c502a5ff9dd2924f1ed32ba96e3b65735d837b4bfd978d3161b1702e66aca4b7" 1198 | dependencies = [ 1199 | "jemalloc-sys", 1200 | "libc", 1201 | "paste", 1202 | ] 1203 | 1204 | [[package]] 1205 | name = "jemalloc-sys" 1206 | version = "0.3.2" 1207 | source = "registry+https://github.com/rust-lang/crates.io-index" 1208 | checksum = "0d3b9f3f5c9b31aa0f5ed3260385ac205db665baa41d49bb8338008ae94ede45" 1209 | dependencies = [ 1210 | "cc", 1211 | "fs_extra", 1212 | "libc", 1213 | ] 1214 | 1215 | [[package]] 1216 | name = "jemallocator" 1217 | version = "0.3.2" 1218 | source = "registry+https://github.com/rust-lang/crates.io-index" 1219 | checksum = "43ae63fcfc45e99ab3d1b29a46782ad679e98436c3169d15a167a1108a724b69" 1220 | dependencies = [ 1221 | "jemalloc-sys", 1222 | "libc", 1223 | ] 1224 | 1225 | [[package]] 1226 | name = "jobserver" 1227 | version = "0.1.22" 1228 | source = "registry+https://github.com/rust-lang/crates.io-index" 1229 | checksum = "972f5ae5d1cb9c6ae417789196c803205313edde988685da5e3aae0827b9e7fd" 1230 | dependencies = [ 1231 | "libc", 1232 | ] 1233 | 1234 | [[package]] 1235 | name = "js-sys" 1236 | version = "0.3.50" 1237 | source = "registry+https://github.com/rust-lang/crates.io-index" 1238 | checksum = "2d99f9e3e84b8f67f846ef5b4cbbc3b1c29f6c759fcbce6f01aa0e73d932a24c" 1239 | dependencies = [ 1240 | "wasm-bindgen", 1241 | ] 1242 | 1243 | [[package]] 1244 | name = "keccak" 1245 | version = "0.1.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "67c21572b4949434e4fc1e1978b99c5f77064153c59d998bf13ecd96fb5ecba7" 1248 | 1249 | [[package]] 1250 | name = "kernel32-sys" 1251 | version = "0.2.2" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" 1254 | dependencies = [ 1255 | "winapi 0.2.8", 1256 | "winapi-build", 1257 | ] 1258 | 1259 | [[package]] 1260 | name = "lazy_static" 1261 | version = "1.4.0" 1262 | source = "registry+https://github.com/rust-lang/crates.io-index" 1263 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1264 | dependencies = [ 1265 | "spin", 1266 | ] 1267 | 1268 | [[package]] 1269 | name = "libc" 1270 | version = "0.2.94" 1271 | source = "registry+https://github.com/rust-lang/crates.io-index" 1272 | checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" 1273 | 1274 | [[package]] 1275 | name = "libloading" 1276 | version = "0.6.7" 1277 | source = "registry+https://github.com/rust-lang/crates.io-index" 1278 | checksum = "351a32417a12d5f7e82c368a66781e307834dae04c6ce0cd4456d52989229883" 1279 | dependencies = [ 1280 | "cfg-if 1.0.0", 1281 | "winapi 0.3.9", 1282 | ] 1283 | 1284 | [[package]] 1285 | name = "libsecp256k1" 1286 | version = "0.3.5" 1287 | source = "registry+https://github.com/rust-lang/crates.io-index" 1288 | checksum = "1fc1e2c808481a63dc6da2074752fdd4336a3c8fcc68b83db6f1fd5224ae7962" 1289 | dependencies = [ 1290 | "arrayref", 1291 | "crunchy", 1292 | "digest 0.8.1", 1293 | "hmac-drbg", 1294 | "rand 0.7.3", 1295 | "sha2 0.8.2", 1296 | "subtle 2.4.0", 1297 | "typenum", 1298 | ] 1299 | 1300 | [[package]] 1301 | name = "lock_api" 1302 | version = "0.3.4" 1303 | source = "registry+https://github.com/rust-lang/crates.io-index" 1304 | checksum = "c4da24a77a3d8a6d4862d95f72e6fdb9c09a643ecdb402d754004a557f2bec75" 1305 | dependencies = [ 1306 | "scopeguard", 1307 | ] 1308 | 1309 | [[package]] 1310 | name = "lock_api" 1311 | version = "0.4.4" 1312 | source = "registry+https://github.com/rust-lang/crates.io-index" 1313 | checksum = "0382880606dff6d15c9476c416d18690b72742aa7b605bb6dd6ec9030fbf07eb" 1314 | dependencies = [ 1315 | "scopeguard", 1316 | ] 1317 | 1318 | [[package]] 1319 | name = "log" 1320 | version = "0.4.14" 1321 | source = "registry+https://github.com/rust-lang/crates.io-index" 1322 | checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" 1323 | dependencies = [ 1324 | "cfg-if 1.0.0", 1325 | ] 1326 | 1327 | [[package]] 1328 | name = "matches" 1329 | version = "0.1.8" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "7ffc5c5338469d4d3ea17d269fa8ea3512ad247247c30bd2df69e68309ed0a08" 1332 | 1333 | [[package]] 1334 | name = "maybe-uninit" 1335 | version = "2.0.0" 1336 | source = "registry+https://github.com/rust-lang/crates.io-index" 1337 | checksum = "60302e4db3a61da70c0cb7991976248362f30319e88850c487b9b95bbf059e00" 1338 | 1339 | [[package]] 1340 | name = "memchr" 1341 | version = "2.4.0" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | checksum = "b16bd47d9e329435e309c58469fe0791c2d0d1ba96ec0954152a5ae2b04387dc" 1344 | 1345 | [[package]] 1346 | name = "memmap2" 1347 | version = "0.1.0" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "d9b70ca2a6103ac8b665dc150b142ef0e4e89df640c9e6cf295d189c3caebe5a" 1350 | dependencies = [ 1351 | "libc", 1352 | ] 1353 | 1354 | [[package]] 1355 | name = "memoffset" 1356 | version = "0.5.6" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "043175f069eda7b85febe4a74abbaeff828d9f8b448515d3151a14a3542811aa" 1359 | dependencies = [ 1360 | "autocfg", 1361 | ] 1362 | 1363 | [[package]] 1364 | name = "memoffset" 1365 | version = "0.6.3" 1366 | source = "registry+https://github.com/rust-lang/crates.io-index" 1367 | checksum = "f83fb6581e8ed1f85fd45c116db8405483899489e38406156c25eb743554361d" 1368 | dependencies = [ 1369 | "autocfg", 1370 | ] 1371 | 1372 | [[package]] 1373 | name = "mime" 1374 | version = "0.3.16" 1375 | source = "registry+https://github.com/rust-lang/crates.io-index" 1376 | checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" 1377 | 1378 | [[package]] 1379 | name = "miniz_oxide" 1380 | version = "0.4.4" 1381 | source = "registry+https://github.com/rust-lang/crates.io-index" 1382 | checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" 1383 | dependencies = [ 1384 | "adler", 1385 | "autocfg", 1386 | ] 1387 | 1388 | [[package]] 1389 | name = "mio" 1390 | version = "0.6.23" 1391 | source = "registry+https://github.com/rust-lang/crates.io-index" 1392 | checksum = "4afd66f5b91bf2a3bc13fad0e21caedac168ca4c707504e75585648ae80e4cc4" 1393 | dependencies = [ 1394 | "cfg-if 0.1.10", 1395 | "fuchsia-zircon", 1396 | "fuchsia-zircon-sys", 1397 | "iovec", 1398 | "kernel32-sys", 1399 | "libc", 1400 | "log", 1401 | "miow 0.2.2", 1402 | "net2", 1403 | "slab", 1404 | "winapi 0.2.8", 1405 | ] 1406 | 1407 | [[package]] 1408 | name = "mio" 1409 | version = "0.7.11" 1410 | source = "registry+https://github.com/rust-lang/crates.io-index" 1411 | checksum = "cf80d3e903b34e0bd7282b218398aec54e082c840d9baf8339e0080a0c542956" 1412 | dependencies = [ 1413 | "libc", 1414 | "log", 1415 | "miow 0.3.7", 1416 | "ntapi", 1417 | "winapi 0.3.9", 1418 | ] 1419 | 1420 | [[package]] 1421 | name = "mio-uds" 1422 | version = "0.6.8" 1423 | source = "registry+https://github.com/rust-lang/crates.io-index" 1424 | checksum = "afcb699eb26d4332647cc848492bbc15eafb26f08d0304550d5aa1f612e066f0" 1425 | dependencies = [ 1426 | "iovec", 1427 | "libc", 1428 | "mio 0.6.23", 1429 | ] 1430 | 1431 | [[package]] 1432 | name = "miow" 1433 | version = "0.2.2" 1434 | source = "registry+https://github.com/rust-lang/crates.io-index" 1435 | checksum = "ebd808424166322d4a38da87083bfddd3ac4c131334ed55856112eb06d46944d" 1436 | dependencies = [ 1437 | "kernel32-sys", 1438 | "net2", 1439 | "winapi 0.2.8", 1440 | "ws2_32-sys", 1441 | ] 1442 | 1443 | [[package]] 1444 | name = "miow" 1445 | version = "0.3.7" 1446 | source = "registry+https://github.com/rust-lang/crates.io-index" 1447 | checksum = "b9f1c5b025cda876f66ef43a113f91ebc9f4ccef34843000e0adf6ebbab84e21" 1448 | dependencies = [ 1449 | "winapi 0.3.9", 1450 | ] 1451 | 1452 | [[package]] 1453 | name = "net2" 1454 | version = "0.2.37" 1455 | source = "registry+https://github.com/rust-lang/crates.io-index" 1456 | checksum = "391630d12b68002ae1e25e8f974306474966550ad82dac6886fb8910c19568ae" 1457 | dependencies = [ 1458 | "cfg-if 0.1.10", 1459 | "libc", 1460 | "winapi 0.3.9", 1461 | ] 1462 | 1463 | [[package]] 1464 | name = "ntapi" 1465 | version = "0.3.6" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "3f6bb902e437b6d86e03cce10a7e2af662292c5dfef23b65899ea3ac9354ad44" 1468 | dependencies = [ 1469 | "winapi 0.3.9", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "num-bigint" 1474 | version = "0.4.0" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | checksum = "4e0d047c1062aa51e256408c560894e5251f08925980e53cf1aa5bd00eec6512" 1477 | dependencies = [ 1478 | "autocfg", 1479 | "num-integer", 1480 | "num-traits", 1481 | ] 1482 | 1483 | [[package]] 1484 | name = "num-derive" 1485 | version = "0.3.3" 1486 | source = "registry+https://github.com/rust-lang/crates.io-index" 1487 | checksum = "876a53fff98e03a936a674b29568b0e605f06b29372c2489ff4de23f1949743d" 1488 | dependencies = [ 1489 | "proc-macro2 1.0.26", 1490 | "quote 1.0.9", 1491 | "syn 1.0.71", 1492 | ] 1493 | 1494 | [[package]] 1495 | name = "num-integer" 1496 | version = "0.1.44" 1497 | source = "registry+https://github.com/rust-lang/crates.io-index" 1498 | checksum = "d2cc698a63b549a70bc047073d2949cce27cd1c7b0a4a862d08a8031bc2801db" 1499 | dependencies = [ 1500 | "autocfg", 1501 | "num-traits", 1502 | ] 1503 | 1504 | [[package]] 1505 | name = "num-traits" 1506 | version = "0.2.14" 1507 | source = "registry+https://github.com/rust-lang/crates.io-index" 1508 | checksum = "9a64b1ec5cda2586e284722486d802acf1f7dbdc623e2bfc57e65ca1cd099290" 1509 | dependencies = [ 1510 | "autocfg", 1511 | ] 1512 | 1513 | [[package]] 1514 | name = "num_cpus" 1515 | version = "1.13.0" 1516 | source = "registry+https://github.com/rust-lang/crates.io-index" 1517 | checksum = "05499f3756671c15885fee9034446956fff3f243d6077b91e5767df161f766b3" 1518 | dependencies = [ 1519 | "hermit-abi", 1520 | "libc", 1521 | ] 1522 | 1523 | [[package]] 1524 | name = "object" 1525 | version = "0.23.0" 1526 | source = "registry+https://github.com/rust-lang/crates.io-index" 1527 | checksum = "a9a7ab5d64814df0fe4a4b5ead45ed6c5f181ee3ff04ba344313a6c80446c5d4" 1528 | 1529 | [[package]] 1530 | name = "once_cell" 1531 | version = "1.7.2" 1532 | source = "registry+https://github.com/rust-lang/crates.io-index" 1533 | checksum = "af8b08b04175473088b46763e51ee54da5f9a164bc162f615b91bc179dbf15a3" 1534 | 1535 | [[package]] 1536 | name = "opaque-debug" 1537 | version = "0.2.3" 1538 | source = "registry+https://github.com/rust-lang/crates.io-index" 1539 | checksum = "2839e79665f131bdb5782e51f2c6c9599c133c6098982a54c794358bf432529c" 1540 | 1541 | [[package]] 1542 | name = "opaque-debug" 1543 | version = "0.3.0" 1544 | source = "registry+https://github.com/rust-lang/crates.io-index" 1545 | checksum = "624a8340c38c1b80fd549087862da4ba43e08858af025b236e509b6649fc13d5" 1546 | 1547 | [[package]] 1548 | name = "ouroboros" 1549 | version = "0.5.1" 1550 | source = "registry+https://github.com/rust-lang/crates.io-index" 1551 | checksum = "cc04551635026d3ac7bc646698ea1836a85ed2a26b7094fe1d15d8b14854c4a2" 1552 | dependencies = [ 1553 | "ouroboros_macro", 1554 | "stable_deref_trait", 1555 | ] 1556 | 1557 | [[package]] 1558 | name = "ouroboros_macro" 1559 | version = "0.5.1" 1560 | source = "registry+https://github.com/rust-lang/crates.io-index" 1561 | checksum = "cec33dfceabec83cd0e95a5ce9d20e76ab3a5cbfef59659b8c927f69b93ed8ae" 1562 | dependencies = [ 1563 | "Inflector", 1564 | "proc-macro2 1.0.26", 1565 | "quote 1.0.9", 1566 | "syn 1.0.71", 1567 | ] 1568 | 1569 | [[package]] 1570 | name = "parking_lot" 1571 | version = "0.9.0" 1572 | source = "registry+https://github.com/rust-lang/crates.io-index" 1573 | checksum = "f842b1982eb6c2fe34036a4fbfb06dd185a3f5c8edfaacdf7d1ea10b07de6252" 1574 | dependencies = [ 1575 | "lock_api 0.3.4", 1576 | "parking_lot_core 0.6.2", 1577 | "rustc_version", 1578 | ] 1579 | 1580 | [[package]] 1581 | name = "parking_lot" 1582 | version = "0.11.1" 1583 | source = "registry+https://github.com/rust-lang/crates.io-index" 1584 | checksum = "6d7744ac029df22dca6284efe4e898991d28e3085c706c972bcd7da4a27a15eb" 1585 | dependencies = [ 1586 | "instant", 1587 | "lock_api 0.4.4", 1588 | "parking_lot_core 0.8.3", 1589 | ] 1590 | 1591 | [[package]] 1592 | name = "parking_lot_core" 1593 | version = "0.6.2" 1594 | source = "registry+https://github.com/rust-lang/crates.io-index" 1595 | checksum = "b876b1b9e7ac6e1a74a6da34d25c42e17e8862aa409cbbbdcfc8d86c6f3bc62b" 1596 | dependencies = [ 1597 | "cfg-if 0.1.10", 1598 | "cloudabi", 1599 | "libc", 1600 | "redox_syscall 0.1.57", 1601 | "rustc_version", 1602 | "smallvec 0.6.14", 1603 | "winapi 0.3.9", 1604 | ] 1605 | 1606 | [[package]] 1607 | name = "parking_lot_core" 1608 | version = "0.8.3" 1609 | source = "registry+https://github.com/rust-lang/crates.io-index" 1610 | checksum = "fa7a782938e745763fe6907fc6ba86946d72f49fe7e21de074e08128a99fb018" 1611 | dependencies = [ 1612 | "cfg-if 1.0.0", 1613 | "instant", 1614 | "libc", 1615 | "redox_syscall 0.2.7", 1616 | "smallvec 1.6.1", 1617 | "winapi 0.3.9", 1618 | ] 1619 | 1620 | [[package]] 1621 | name = "paste" 1622 | version = "0.1.18" 1623 | source = "registry+https://github.com/rust-lang/crates.io-index" 1624 | checksum = "45ca20c77d80be666aef2b45486da86238fabe33e38306bd3118fe4af33fa880" 1625 | dependencies = [ 1626 | "paste-impl", 1627 | "proc-macro-hack", 1628 | ] 1629 | 1630 | [[package]] 1631 | name = "paste-impl" 1632 | version = "0.1.18" 1633 | source = "registry+https://github.com/rust-lang/crates.io-index" 1634 | checksum = "d95a7db200b97ef370c8e6de0088252f7e0dfff7d047a28528e47456c0fc98b6" 1635 | dependencies = [ 1636 | "proc-macro-hack", 1637 | ] 1638 | 1639 | [[package]] 1640 | name = "pbkdf2" 1641 | version = "0.6.0" 1642 | source = "registry+https://github.com/rust-lang/crates.io-index" 1643 | checksum = "b3b8c0d71734018084da0c0354193a5edfb81b20d2d57a92c5b154aefc554a4a" 1644 | dependencies = [ 1645 | "crypto-mac 0.10.0", 1646 | ] 1647 | 1648 | [[package]] 1649 | name = "percent-encoding" 1650 | version = "2.1.0" 1651 | source = "registry+https://github.com/rust-lang/crates.io-index" 1652 | checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" 1653 | 1654 | [[package]] 1655 | name = "pin-project" 1656 | version = "1.0.7" 1657 | source = "registry+https://github.com/rust-lang/crates.io-index" 1658 | checksum = "c7509cc106041c40a4518d2af7a61530e1eed0e6285296a3d8c5472806ccc4a4" 1659 | dependencies = [ 1660 | "pin-project-internal", 1661 | ] 1662 | 1663 | [[package]] 1664 | name = "pin-project-internal" 1665 | version = "1.0.7" 1666 | source = "registry+https://github.com/rust-lang/crates.io-index" 1667 | checksum = "48c950132583b500556b1efd71d45b319029f2b71518d979fcc208e16b42426f" 1668 | dependencies = [ 1669 | "proc-macro2 1.0.26", 1670 | "quote 1.0.9", 1671 | "syn 1.0.71", 1672 | ] 1673 | 1674 | [[package]] 1675 | name = "pin-project-lite" 1676 | version = "0.2.6" 1677 | source = "registry+https://github.com/rust-lang/crates.io-index" 1678 | checksum = "dc0e1f259c92177c30a4c9d177246edd0a3568b25756a977d0632cf8fa37e905" 1679 | 1680 | [[package]] 1681 | name = "pin-utils" 1682 | version = "0.1.0" 1683 | source = "registry+https://github.com/rust-lang/crates.io-index" 1684 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1685 | 1686 | [[package]] 1687 | name = "pkg-config" 1688 | version = "0.3.19" 1689 | source = "registry+https://github.com/rust-lang/crates.io-index" 1690 | checksum = "3831453b3449ceb48b6d9c7ad7c96d5ea673e9b470a1dc578c2ce6521230884c" 1691 | 1692 | [[package]] 1693 | name = "plain" 1694 | version = "0.2.3" 1695 | source = "registry+https://github.com/rust-lang/crates.io-index" 1696 | checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6" 1697 | 1698 | [[package]] 1699 | name = "ppv-lite86" 1700 | version = "0.2.10" 1701 | source = "registry+https://github.com/rust-lang/crates.io-index" 1702 | checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" 1703 | 1704 | [[package]] 1705 | name = "proc-macro-crate" 1706 | version = "0.1.5" 1707 | source = "registry+https://github.com/rust-lang/crates.io-index" 1708 | checksum = "1d6ea3c4595b96363c13943497db34af4460fb474a95c43f4446ad341b8c9785" 1709 | dependencies = [ 1710 | "toml", 1711 | ] 1712 | 1713 | [[package]] 1714 | name = "proc-macro-hack" 1715 | version = "0.5.19" 1716 | source = "registry+https://github.com/rust-lang/crates.io-index" 1717 | checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" 1718 | 1719 | [[package]] 1720 | name = "proc-macro-nested" 1721 | version = "0.1.7" 1722 | source = "registry+https://github.com/rust-lang/crates.io-index" 1723 | checksum = "bc881b2c22681370c6a780e47af9840ef841837bc98118431d4e1868bd0c1086" 1724 | 1725 | [[package]] 1726 | name = "proc-macro2" 1727 | version = "0.4.30" 1728 | source = "registry+https://github.com/rust-lang/crates.io-index" 1729 | checksum = "cf3d2011ab5c909338f7887f4fc896d35932e29146c12c8d01da6b22a80ba759" 1730 | dependencies = [ 1731 | "unicode-xid 0.1.0", 1732 | ] 1733 | 1734 | [[package]] 1735 | name = "proc-macro2" 1736 | version = "1.0.26" 1737 | source = "registry+https://github.com/rust-lang/crates.io-index" 1738 | checksum = "a152013215dca273577e18d2bf00fa862b89b24169fb78c4c95aeb07992c9cec" 1739 | dependencies = [ 1740 | "unicode-xid 0.2.2", 1741 | ] 1742 | 1743 | [[package]] 1744 | name = "quote" 1745 | version = "0.6.13" 1746 | source = "registry+https://github.com/rust-lang/crates.io-index" 1747 | checksum = "6ce23b6b870e8f94f81fb0a363d65d86675884b34a09043c81e5562f11c1f8e1" 1748 | dependencies = [ 1749 | "proc-macro2 0.4.30", 1750 | ] 1751 | 1752 | [[package]] 1753 | name = "quote" 1754 | version = "1.0.9" 1755 | source = "registry+https://github.com/rust-lang/crates.io-index" 1756 | checksum = "c3d0b9745dc2debf507c8422de05d7226cc1f0644216dfdfead988f9b1ab32a7" 1757 | dependencies = [ 1758 | "proc-macro2 1.0.26", 1759 | ] 1760 | 1761 | [[package]] 1762 | name = "rand" 1763 | version = "0.7.3" 1764 | source = "registry+https://github.com/rust-lang/crates.io-index" 1765 | checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" 1766 | dependencies = [ 1767 | "getrandom 0.1.16", 1768 | "libc", 1769 | "rand_chacha 0.2.2", 1770 | "rand_core 0.5.1", 1771 | "rand_hc 0.2.0", 1772 | "rand_pcg", 1773 | ] 1774 | 1775 | [[package]] 1776 | name = "rand" 1777 | version = "0.8.3" 1778 | source = "registry+https://github.com/rust-lang/crates.io-index" 1779 | checksum = "0ef9e7e66b4468674bfcb0c81af8b7fa0bb154fa9f28eb840da5c447baeb8d7e" 1780 | dependencies = [ 1781 | "libc", 1782 | "rand_chacha 0.3.0", 1783 | "rand_core 0.6.2", 1784 | "rand_hc 0.3.0", 1785 | ] 1786 | 1787 | [[package]] 1788 | name = "rand_chacha" 1789 | version = "0.2.2" 1790 | source = "registry+https://github.com/rust-lang/crates.io-index" 1791 | checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" 1792 | dependencies = [ 1793 | "ppv-lite86", 1794 | "rand_core 0.5.1", 1795 | ] 1796 | 1797 | [[package]] 1798 | name = "rand_chacha" 1799 | version = "0.3.0" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "e12735cf05c9e10bf21534da50a147b924d555dc7a547c42e6bb2d5b6017ae0d" 1802 | dependencies = [ 1803 | "ppv-lite86", 1804 | "rand_core 0.6.2", 1805 | ] 1806 | 1807 | [[package]] 1808 | name = "rand_core" 1809 | version = "0.5.1" 1810 | source = "registry+https://github.com/rust-lang/crates.io-index" 1811 | checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" 1812 | dependencies = [ 1813 | "getrandom 0.1.16", 1814 | ] 1815 | 1816 | [[package]] 1817 | name = "rand_core" 1818 | version = "0.6.2" 1819 | source = "registry+https://github.com/rust-lang/crates.io-index" 1820 | checksum = "34cf66eb183df1c5876e2dcf6b13d57340741e8dc255b48e40a26de954d06ae7" 1821 | dependencies = [ 1822 | "getrandom 0.2.2", 1823 | ] 1824 | 1825 | [[package]] 1826 | name = "rand_hc" 1827 | version = "0.2.0" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" 1830 | dependencies = [ 1831 | "rand_core 0.5.1", 1832 | ] 1833 | 1834 | [[package]] 1835 | name = "rand_hc" 1836 | version = "0.3.0" 1837 | source = "registry+https://github.com/rust-lang/crates.io-index" 1838 | checksum = "3190ef7066a446f2e7f42e239d161e905420ccab01eb967c9eb27d21b2322a73" 1839 | dependencies = [ 1840 | "rand_core 0.6.2", 1841 | ] 1842 | 1843 | [[package]] 1844 | name = "rand_pcg" 1845 | version = "0.2.1" 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" 1847 | checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" 1848 | dependencies = [ 1849 | "rand_core 0.5.1", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "rayon" 1854 | version = "1.5.0" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | checksum = "8b0d8e0819fadc20c74ea8373106ead0600e3a67ef1fe8da56e39b9ae7275674" 1857 | dependencies = [ 1858 | "autocfg", 1859 | "crossbeam-deque 0.8.0", 1860 | "either", 1861 | "rayon-core", 1862 | ] 1863 | 1864 | [[package]] 1865 | name = "rayon-core" 1866 | version = "1.9.0" 1867 | source = "registry+https://github.com/rust-lang/crates.io-index" 1868 | checksum = "9ab346ac5921dc62ffa9f89b7a773907511cdfa5490c572ae9be1be33e8afa4a" 1869 | dependencies = [ 1870 | "crossbeam-channel 0.5.1", 1871 | "crossbeam-deque 0.8.0", 1872 | "crossbeam-utils 0.8.4", 1873 | "lazy_static", 1874 | "num_cpus", 1875 | ] 1876 | 1877 | [[package]] 1878 | name = "redox_syscall" 1879 | version = "0.1.57" 1880 | source = "registry+https://github.com/rust-lang/crates.io-index" 1881 | checksum = "41cc0f7e4d5d4544e8861606a285bb08d3e70712ccc7d2b84d7c0ccfaf4b05ce" 1882 | 1883 | [[package]] 1884 | name = "redox_syscall" 1885 | version = "0.2.7" 1886 | source = "registry+https://github.com/rust-lang/crates.io-index" 1887 | checksum = "85dd92e586f7355c633911e11f77f3d12f04b1b1bd76a198bd34ae3af8341ef2" 1888 | dependencies = [ 1889 | "bitflags", 1890 | ] 1891 | 1892 | [[package]] 1893 | name = "regex" 1894 | version = "1.5.2" 1895 | source = "registry+https://github.com/rust-lang/crates.io-index" 1896 | checksum = "1efb2352a0f4d4b128f734b5c44c79ff80117351138733f12f982fe3e2b13343" 1897 | dependencies = [ 1898 | "aho-corasick", 1899 | "memchr", 1900 | "regex-syntax", 1901 | ] 1902 | 1903 | [[package]] 1904 | name = "regex-syntax" 1905 | version = "0.6.24" 1906 | source = "registry+https://github.com/rust-lang/crates.io-index" 1907 | checksum = "00efb87459ba4f6fb2169d20f68565555688e1250ee6825cdf6254f8b48fafb2" 1908 | 1909 | [[package]] 1910 | name = "remove_dir_all" 1911 | version = "0.5.3" 1912 | source = "registry+https://github.com/rust-lang/crates.io-index" 1913 | checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" 1914 | dependencies = [ 1915 | "winapi 0.3.9", 1916 | ] 1917 | 1918 | [[package]] 1919 | name = "reqwest" 1920 | version = "0.11.3" 1921 | source = "registry+https://github.com/rust-lang/crates.io-index" 1922 | checksum = "2296f2fac53979e8ccbc4a1136b25dcefd37be9ed7e4a1f6b05a6029c84ff124" 1923 | dependencies = [ 1924 | "base64 0.13.0", 1925 | "bytes 1.0.1", 1926 | "encoding_rs", 1927 | "futures-core", 1928 | "futures-util", 1929 | "http", 1930 | "http-body", 1931 | "hyper", 1932 | "hyper-rustls", 1933 | "ipnet", 1934 | "js-sys", 1935 | "lazy_static", 1936 | "log", 1937 | "mime", 1938 | "percent-encoding", 1939 | "pin-project-lite", 1940 | "rustls", 1941 | "serde", 1942 | "serde_json", 1943 | "serde_urlencoded", 1944 | "tokio 1.5.0", 1945 | "tokio-rustls", 1946 | "url", 1947 | "wasm-bindgen", 1948 | "wasm-bindgen-futures", 1949 | "web-sys", 1950 | "webpki-roots", 1951 | "winreg", 1952 | ] 1953 | 1954 | [[package]] 1955 | name = "ring" 1956 | version = "0.16.12" 1957 | source = "registry+https://github.com/rust-lang/crates.io-index" 1958 | checksum = "1ba5a8ec64ee89a76c98c549af81ff14813df09c3e6dc4766c3856da48597a0c" 1959 | dependencies = [ 1960 | "cc", 1961 | "lazy_static", 1962 | "libc", 1963 | "spin", 1964 | "untrusted", 1965 | "web-sys", 1966 | "winapi 0.3.9", 1967 | ] 1968 | 1969 | [[package]] 1970 | name = "rustc-demangle" 1971 | version = "0.1.18" 1972 | source = "registry+https://github.com/rust-lang/crates.io-index" 1973 | checksum = "6e3bad0ee36814ca07d7968269dd4b7ec89ec2da10c4bb613928d3077083c232" 1974 | 1975 | [[package]] 1976 | name = "rustc_version" 1977 | version = "0.2.3" 1978 | source = "registry+https://github.com/rust-lang/crates.io-index" 1979 | checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 1980 | dependencies = [ 1981 | "semver", 1982 | ] 1983 | 1984 | [[package]] 1985 | name = "rustls" 1986 | version = "0.19.1" 1987 | source = "registry+https://github.com/rust-lang/crates.io-index" 1988 | checksum = "35edb675feee39aec9c99fa5ff985081995a06d594114ae14cbe797ad7b7a6d7" 1989 | dependencies = [ 1990 | "base64 0.13.0", 1991 | "log", 1992 | "ring", 1993 | "sct", 1994 | "webpki", 1995 | ] 1996 | 1997 | [[package]] 1998 | name = "rustversion" 1999 | version = "1.0.4" 2000 | source = "registry+https://github.com/rust-lang/crates.io-index" 2001 | checksum = "cb5d2a036dc6d2d8fd16fde3498b04306e29bd193bf306a57427019b823d5acd" 2002 | 2003 | [[package]] 2004 | name = "ryu" 2005 | version = "1.0.5" 2006 | source = "registry+https://github.com/rust-lang/crates.io-index" 2007 | checksum = "71d301d4193d031abdd79ff7e3dd721168a9572ef3fe51a1517aba235bd8f86e" 2008 | 2009 | [[package]] 2010 | name = "same-file" 2011 | version = "1.0.6" 2012 | source = "registry+https://github.com/rust-lang/crates.io-index" 2013 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2014 | dependencies = [ 2015 | "winapi-util", 2016 | ] 2017 | 2018 | [[package]] 2019 | name = "scopeguard" 2020 | version = "1.1.0" 2021 | source = "registry+https://github.com/rust-lang/crates.io-index" 2022 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 2023 | 2024 | [[package]] 2025 | name = "scroll" 2026 | version = "0.10.2" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "fda28d4b4830b807a8b43f7b0e6b5df875311b3e7621d84577188c175b6ec1ec" 2029 | dependencies = [ 2030 | "scroll_derive", 2031 | ] 2032 | 2033 | [[package]] 2034 | name = "scroll_derive" 2035 | version = "0.10.5" 2036 | source = "registry+https://github.com/rust-lang/crates.io-index" 2037 | checksum = "aaaae8f38bb311444cfb7f1979af0bc9240d95795f75f9ceddf6a59b79ceffa0" 2038 | dependencies = [ 2039 | "proc-macro2 1.0.26", 2040 | "quote 1.0.9", 2041 | "syn 1.0.71", 2042 | ] 2043 | 2044 | [[package]] 2045 | name = "sct" 2046 | version = "0.6.0" 2047 | source = "registry+https://github.com/rust-lang/crates.io-index" 2048 | checksum = "e3042af939fca8c3453b7af0f1c66e533a15a86169e39de2657310ade8f98d3c" 2049 | dependencies = [ 2050 | "ring", 2051 | "untrusted", 2052 | ] 2053 | 2054 | [[package]] 2055 | name = "semver" 2056 | version = "0.9.0" 2057 | source = "registry+https://github.com/rust-lang/crates.io-index" 2058 | checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2059 | dependencies = [ 2060 | "semver-parser", 2061 | ] 2062 | 2063 | [[package]] 2064 | name = "semver-parser" 2065 | version = "0.7.0" 2066 | source = "registry+https://github.com/rust-lang/crates.io-index" 2067 | checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2068 | 2069 | [[package]] 2070 | name = "serde" 2071 | version = "1.0.125" 2072 | source = "registry+https://github.com/rust-lang/crates.io-index" 2073 | checksum = "558dc50e1a5a5fa7112ca2ce4effcb321b0300c0d4ccf0776a9f60cd89031171" 2074 | dependencies = [ 2075 | "serde_derive", 2076 | ] 2077 | 2078 | [[package]] 2079 | name = "serde_bytes" 2080 | version = "0.11.5" 2081 | source = "registry+https://github.com/rust-lang/crates.io-index" 2082 | checksum = "16ae07dd2f88a366f15bd0632ba725227018c69a1c8550a927324f8eb8368bb9" 2083 | dependencies = [ 2084 | "serde", 2085 | ] 2086 | 2087 | [[package]] 2088 | name = "serde_derive" 2089 | version = "1.0.125" 2090 | source = "registry+https://github.com/rust-lang/crates.io-index" 2091 | checksum = "b093b7a2bb58203b5da3056c05b4ec1fed827dcfdb37347a8841695263b3d06d" 2092 | dependencies = [ 2093 | "proc-macro2 1.0.26", 2094 | "quote 1.0.9", 2095 | "syn 1.0.71", 2096 | ] 2097 | 2098 | [[package]] 2099 | name = "serde_json" 2100 | version = "1.0.64" 2101 | source = "registry+https://github.com/rust-lang/crates.io-index" 2102 | checksum = "799e97dc9fdae36a5c8b8f2cae9ce2ee9fdce2058c57a93e6099d919fd982f79" 2103 | dependencies = [ 2104 | "itoa", 2105 | "ryu", 2106 | "serde", 2107 | ] 2108 | 2109 | [[package]] 2110 | name = "serde_urlencoded" 2111 | version = "0.7.0" 2112 | source = "registry+https://github.com/rust-lang/crates.io-index" 2113 | checksum = "edfa57a7f8d9c1d260a549e7224100f6c43d43f9103e06dd8b4095a9b2b43ce9" 2114 | dependencies = [ 2115 | "form_urlencoded", 2116 | "itoa", 2117 | "ryu", 2118 | "serde", 2119 | ] 2120 | 2121 | [[package]] 2122 | name = "sha2" 2123 | version = "0.8.2" 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" 2125 | checksum = "a256f46ea78a0c0d9ff00077504903ac881a1dafdc20da66545699e7776b3e69" 2126 | dependencies = [ 2127 | "block-buffer 0.7.3", 2128 | "digest 0.8.1", 2129 | "fake-simd", 2130 | "opaque-debug 0.2.3", 2131 | ] 2132 | 2133 | [[package]] 2134 | name = "sha2" 2135 | version = "0.9.3" 2136 | source = "registry+https://github.com/rust-lang/crates.io-index" 2137 | checksum = "fa827a14b29ab7f44778d14a88d3cb76e949c45083f7dbfa507d0cb699dc12de" 2138 | dependencies = [ 2139 | "block-buffer 0.9.0", 2140 | "cfg-if 1.0.0", 2141 | "cpuid-bool", 2142 | "digest 0.9.0", 2143 | "opaque-debug 0.3.0", 2144 | ] 2145 | 2146 | [[package]] 2147 | name = "sha3" 2148 | version = "0.9.1" 2149 | source = "registry+https://github.com/rust-lang/crates.io-index" 2150 | checksum = "f81199417d4e5de3f04b1e871023acea7389672c4135918f05aa9cbf2f2fa809" 2151 | dependencies = [ 2152 | "block-buffer 0.9.0", 2153 | "digest 0.9.0", 2154 | "keccak", 2155 | "opaque-debug 0.3.0", 2156 | ] 2157 | 2158 | [[package]] 2159 | name = "signal-hook-registry" 2160 | version = "1.3.0" 2161 | source = "registry+https://github.com/rust-lang/crates.io-index" 2162 | checksum = "16f1d0fef1604ba8f7a073c7e701f213e056707210e9020af4528e0101ce11a6" 2163 | dependencies = [ 2164 | "libc", 2165 | ] 2166 | 2167 | [[package]] 2168 | name = "signature" 2169 | version = "1.3.0" 2170 | source = "registry+https://github.com/rust-lang/crates.io-index" 2171 | checksum = "0f0242b8e50dd9accdd56170e94ca1ebd223b098eb9c83539a6e367d0f36ae68" 2172 | 2173 | [[package]] 2174 | name = "slab" 2175 | version = "0.4.3" 2176 | source = "registry+https://github.com/rust-lang/crates.io-index" 2177 | checksum = "f173ac3d1a7e3b28003f40de0b5ce7fe2710f9b9dc3fc38664cebee46b3b6527" 2178 | 2179 | [[package]] 2180 | name = "smallvec" 2181 | version = "0.6.14" 2182 | source = "registry+https://github.com/rust-lang/crates.io-index" 2183 | checksum = "b97fcaeba89edba30f044a10c6a3cc39df9c3f17d7cd829dd1446cab35f890e0" 2184 | dependencies = [ 2185 | "maybe-uninit", 2186 | ] 2187 | 2188 | [[package]] 2189 | name = "smallvec" 2190 | version = "1.6.1" 2191 | source = "registry+https://github.com/rust-lang/crates.io-index" 2192 | checksum = "fe0f37c9e8f3c5a4a66ad655a93c74daac4ad00c441533bf5c6e7990bb42604e" 2193 | 2194 | [[package]] 2195 | name = "socket2" 2196 | version = "0.4.0" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "9e3dfc207c526015c632472a77be09cf1b6e46866581aecae5cc38fb4235dea2" 2199 | dependencies = [ 2200 | "libc", 2201 | "winapi 0.3.9", 2202 | ] 2203 | 2204 | [[package]] 2205 | name = "solana-banks-client" 2206 | version = "1.6.6" 2207 | source = "registry+https://github.com/rust-lang/crates.io-index" 2208 | checksum = "84e398e020121174a8c7d0817ecd03bea68d0540d1c35f0b1ae1c192c496b8d3" 2209 | dependencies = [ 2210 | "bincode", 2211 | "borsh 0.8.2", 2212 | "borsh-derive 0.8.2", 2213 | "futures 0.3.14", 2214 | "mio 0.7.11", 2215 | "solana-banks-interface", 2216 | "solana-program", 2217 | "solana-sdk", 2218 | "tarpc", 2219 | "tokio 1.5.0", 2220 | "tokio-serde", 2221 | ] 2222 | 2223 | [[package]] 2224 | name = "solana-banks-interface" 2225 | version = "1.6.6" 2226 | source = "registry+https://github.com/rust-lang/crates.io-index" 2227 | checksum = "34a065f27d341019da543dee76a38c1a661479b8814ac2fa8e9a5bb71d210d55" 2228 | dependencies = [ 2229 | "mio 0.7.11", 2230 | "serde", 2231 | "solana-sdk", 2232 | "tarpc", 2233 | ] 2234 | 2235 | [[package]] 2236 | name = "solana-banks-server" 2237 | version = "1.6.6" 2238 | source = "registry+https://github.com/rust-lang/crates.io-index" 2239 | checksum = "874279be1633b7707adec626d796ac55e408194289e94ace408adae95a14fb2f" 2240 | dependencies = [ 2241 | "bincode", 2242 | "futures 0.3.14", 2243 | "log", 2244 | "mio 0.7.11", 2245 | "solana-banks-interface", 2246 | "solana-metrics", 2247 | "solana-runtime", 2248 | "solana-sdk", 2249 | "tarpc", 2250 | "tokio 1.5.0", 2251 | "tokio-serde", 2252 | "tokio-stream", 2253 | ] 2254 | 2255 | [[package]] 2256 | name = "solana-bpf-helloworld" 2257 | version = "0.0.1" 2258 | dependencies = [ 2259 | "borsh 0.7.2", 2260 | "borsh-derive 0.8.2", 2261 | "solana-program", 2262 | "solana-program-test", 2263 | "solana-sdk", 2264 | ] 2265 | 2266 | [[package]] 2267 | name = "solana-bpf-loader-program" 2268 | version = "1.6.6" 2269 | source = "registry+https://github.com/rust-lang/crates.io-index" 2270 | checksum = "add869800bf5fc8f6c7b0bbddab1d1a398f6a5ae5376371e59eb690a0489fa62" 2271 | dependencies = [ 2272 | "bincode", 2273 | "byteorder", 2274 | "curve25519-dalek 3.1.0", 2275 | "log", 2276 | "num-derive", 2277 | "num-traits", 2278 | "rand_core 0.6.2", 2279 | "solana-measure", 2280 | "solana-runtime", 2281 | "solana-sdk", 2282 | "solana_rbpf", 2283 | "thiserror", 2284 | ] 2285 | 2286 | [[package]] 2287 | name = "solana-config-program" 2288 | version = "1.6.6" 2289 | source = "registry+https://github.com/rust-lang/crates.io-index" 2290 | checksum = "f185b791eaf0677bf470902823b1053c7f4f7645ea1c4c9bf0b410a975499bc9" 2291 | dependencies = [ 2292 | "bincode", 2293 | "chrono", 2294 | "log", 2295 | "rand_core 0.6.2", 2296 | "serde", 2297 | "serde_derive", 2298 | "solana-sdk", 2299 | ] 2300 | 2301 | [[package]] 2302 | name = "solana-crate-features" 2303 | version = "1.6.6" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "becb3da0ebb90064537b4f8f7abcb2ac70f70114b876fdc1e0d619b09e579a6a" 2306 | dependencies = [ 2307 | "backtrace", 2308 | "bytes 0.4.12", 2309 | "cc", 2310 | "curve25519-dalek 2.1.2", 2311 | "ed25519-dalek", 2312 | "either", 2313 | "lazy_static", 2314 | "libc", 2315 | "rand_chacha 0.2.2", 2316 | "regex-syntax", 2317 | "reqwest", 2318 | "serde", 2319 | "syn 0.15.44", 2320 | "syn 1.0.71", 2321 | "tokio 0.1.22", 2322 | "winapi 0.3.9", 2323 | ] 2324 | 2325 | [[package]] 2326 | name = "solana-frozen-abi" 2327 | version = "1.6.6" 2328 | source = "registry+https://github.com/rust-lang/crates.io-index" 2329 | checksum = "10272e9486b3cb41b04e899929c521c5c2a037ba6be1651cff68ad3959f4d1f9" 2330 | dependencies = [ 2331 | "bs58", 2332 | "bv", 2333 | "generic-array 0.14.4", 2334 | "log", 2335 | "memmap2", 2336 | "rustc_version", 2337 | "serde", 2338 | "serde_derive", 2339 | "sha2 0.9.3", 2340 | "solana-frozen-abi-macro", 2341 | "solana-logger", 2342 | "thiserror", 2343 | ] 2344 | 2345 | [[package]] 2346 | name = "solana-frozen-abi-macro" 2347 | version = "1.6.6" 2348 | source = "registry+https://github.com/rust-lang/crates.io-index" 2349 | checksum = "82f4b6a34f19cc4b09da1919ff9810c1a499c7e77fc9d26bea022f69dc965edf" 2350 | dependencies = [ 2351 | "lazy_static", 2352 | "proc-macro2 1.0.26", 2353 | "quote 1.0.9", 2354 | "rustc_version", 2355 | "syn 1.0.71", 2356 | ] 2357 | 2358 | [[package]] 2359 | name = "solana-logger" 2360 | version = "1.6.6" 2361 | source = "registry+https://github.com/rust-lang/crates.io-index" 2362 | checksum = "3c17fa89f2e5fe988cf95a34df411950db4609f68af8df602371d9b7f83cefa7" 2363 | dependencies = [ 2364 | "env_logger", 2365 | "lazy_static", 2366 | "log", 2367 | ] 2368 | 2369 | [[package]] 2370 | name = "solana-measure" 2371 | version = "1.6.6" 2372 | source = "registry+https://github.com/rust-lang/crates.io-index" 2373 | checksum = "8a949fef09061319f4bd5c56d88bdc08f7acc27afc792ff5c0059b4f303409c0" 2374 | dependencies = [ 2375 | "jemalloc-ctl", 2376 | "jemallocator", 2377 | "log", 2378 | "solana-metrics", 2379 | "solana-sdk", 2380 | ] 2381 | 2382 | [[package]] 2383 | name = "solana-metrics" 2384 | version = "1.6.6" 2385 | source = "registry+https://github.com/rust-lang/crates.io-index" 2386 | checksum = "a35b3eea1e460e90656945a787a429273aeef1c9dd966ffac8b174872ea67a1f" 2387 | dependencies = [ 2388 | "env_logger", 2389 | "gethostname", 2390 | "lazy_static", 2391 | "log", 2392 | "reqwest", 2393 | "solana-sdk", 2394 | ] 2395 | 2396 | [[package]] 2397 | name = "solana-program" 2398 | version = "1.6.6" 2399 | source = "registry+https://github.com/rust-lang/crates.io-index" 2400 | checksum = "885552ce43e9f2cf13fda274bf2b4ef75c5de6e5e0190f53acb83f84cda739c0" 2401 | dependencies = [ 2402 | "bincode", 2403 | "blake3", 2404 | "borsh 0.8.2", 2405 | "borsh-derive 0.8.2", 2406 | "bs58", 2407 | "bv", 2408 | "curve25519-dalek 2.1.2", 2409 | "hex", 2410 | "itertools", 2411 | "lazy_static", 2412 | "log", 2413 | "num-derive", 2414 | "num-traits", 2415 | "rand 0.7.3", 2416 | "rustc_version", 2417 | "rustversion", 2418 | "serde", 2419 | "serde_bytes", 2420 | "serde_derive", 2421 | "sha2 0.9.3", 2422 | "solana-frozen-abi", 2423 | "solana-frozen-abi-macro", 2424 | "solana-logger", 2425 | "solana-sdk-macro", 2426 | "thiserror", 2427 | ] 2428 | 2429 | [[package]] 2430 | name = "solana-program-test" 2431 | version = "1.6.6" 2432 | source = "registry+https://github.com/rust-lang/crates.io-index" 2433 | checksum = "008a7664176a1f5fd79acd3f2c02377b793bd504d54f65fc83ad035f24cd947c" 2434 | dependencies = [ 2435 | "async-trait", 2436 | "base64 0.12.3", 2437 | "bincode", 2438 | "chrono", 2439 | "chrono-humanize", 2440 | "log", 2441 | "mio 0.7.11", 2442 | "serde", 2443 | "serde_derive", 2444 | "solana-banks-client", 2445 | "solana-banks-server", 2446 | "solana-bpf-loader-program", 2447 | "solana-logger", 2448 | "solana-runtime", 2449 | "solana-sdk", 2450 | "solana-vote-program", 2451 | "thiserror", 2452 | "tokio 1.5.0", 2453 | ] 2454 | 2455 | [[package]] 2456 | name = "solana-rayon-threadlimit" 2457 | version = "1.6.6" 2458 | source = "registry+https://github.com/rust-lang/crates.io-index" 2459 | checksum = "e4ff1bba96e1081035ffd291e269c691cacd0271665f0631ba3efaed0b15e71a" 2460 | dependencies = [ 2461 | "lazy_static", 2462 | "num_cpus", 2463 | ] 2464 | 2465 | [[package]] 2466 | name = "solana-runtime" 2467 | version = "1.6.6" 2468 | source = "registry+https://github.com/rust-lang/crates.io-index" 2469 | checksum = "1e82b3f482706a83cb235e554c6313614e47e2ea942b8fea6a1b07a68bdb50b0" 2470 | dependencies = [ 2471 | "arrayref", 2472 | "bincode", 2473 | "blake3", 2474 | "bv", 2475 | "byteorder", 2476 | "bzip2", 2477 | "crossbeam-channel 0.4.4", 2478 | "dashmap", 2479 | "dir-diff", 2480 | "flate2", 2481 | "fnv", 2482 | "itertools", 2483 | "lazy_static", 2484 | "libc", 2485 | "libloading", 2486 | "log", 2487 | "memmap2", 2488 | "num-derive", 2489 | "num-traits", 2490 | "num_cpus", 2491 | "ouroboros", 2492 | "rand 0.7.3", 2493 | "rayon", 2494 | "regex", 2495 | "rustc_version", 2496 | "serde", 2497 | "serde_derive", 2498 | "solana-config-program", 2499 | "solana-frozen-abi", 2500 | "solana-frozen-abi-macro", 2501 | "solana-logger", 2502 | "solana-measure", 2503 | "solana-metrics", 2504 | "solana-rayon-threadlimit", 2505 | "solana-sdk", 2506 | "solana-secp256k1-program", 2507 | "solana-stake-program", 2508 | "solana-vote-program", 2509 | "symlink", 2510 | "tar", 2511 | "tempfile", 2512 | "thiserror", 2513 | "zstd", 2514 | ] 2515 | 2516 | [[package]] 2517 | name = "solana-sdk" 2518 | version = "1.6.6" 2519 | source = "registry+https://github.com/rust-lang/crates.io-index" 2520 | checksum = "280f61d2de90504e44b7494cdc3db91182c995a787677bcb68b45bbee58b3b54" 2521 | dependencies = [ 2522 | "assert_matches", 2523 | "bincode", 2524 | "bs58", 2525 | "bv", 2526 | "byteorder", 2527 | "chrono", 2528 | "digest 0.9.0", 2529 | "ed25519-dalek", 2530 | "generic-array 0.14.4", 2531 | "hex", 2532 | "hmac 0.10.1", 2533 | "itertools", 2534 | "lazy_static", 2535 | "libsecp256k1", 2536 | "log", 2537 | "memmap2", 2538 | "num-derive", 2539 | "num-traits", 2540 | "pbkdf2", 2541 | "rand 0.7.3", 2542 | "rand_chacha 0.2.2", 2543 | "rand_core 0.6.2", 2544 | "rustc_version", 2545 | "rustversion", 2546 | "serde", 2547 | "serde_bytes", 2548 | "serde_derive", 2549 | "serde_json", 2550 | "sha2 0.9.3", 2551 | "sha3", 2552 | "solana-crate-features", 2553 | "solana-frozen-abi", 2554 | "solana-frozen-abi-macro", 2555 | "solana-logger", 2556 | "solana-program", 2557 | "solana-sdk-macro", 2558 | "thiserror", 2559 | ] 2560 | 2561 | [[package]] 2562 | name = "solana-sdk-macro" 2563 | version = "1.6.6" 2564 | source = "registry+https://github.com/rust-lang/crates.io-index" 2565 | checksum = "8264149655cbbcfa1dccd0dc9f62eb04d6832ec08540fcb81db6f305a21d3b65" 2566 | dependencies = [ 2567 | "bs58", 2568 | "proc-macro2 1.0.26", 2569 | "quote 1.0.9", 2570 | "rustversion", 2571 | "syn 1.0.71", 2572 | ] 2573 | 2574 | [[package]] 2575 | name = "solana-secp256k1-program" 2576 | version = "1.6.6" 2577 | source = "registry+https://github.com/rust-lang/crates.io-index" 2578 | checksum = "4fba4a8f73a59358b3876ce7c6f43794fdb406acec238396a6b0b8618846ca1c" 2579 | dependencies = [ 2580 | "bincode", 2581 | "digest 0.9.0", 2582 | "libsecp256k1", 2583 | "rand 0.7.3", 2584 | "sha3", 2585 | "solana-logger", 2586 | "solana-sdk", 2587 | ] 2588 | 2589 | [[package]] 2590 | name = "solana-stake-program" 2591 | version = "1.6.6" 2592 | source = "registry+https://github.com/rust-lang/crates.io-index" 2593 | checksum = "4c2bf1474cfbd5984692d8c8888c2227511a94617e1def8b78e34a46d1694944" 2594 | dependencies = [ 2595 | "bincode", 2596 | "log", 2597 | "num-derive", 2598 | "num-traits", 2599 | "rustc_version", 2600 | "serde", 2601 | "serde_derive", 2602 | "solana-config-program", 2603 | "solana-frozen-abi", 2604 | "solana-frozen-abi-macro", 2605 | "solana-metrics", 2606 | "solana-sdk", 2607 | "solana-vote-program", 2608 | "thiserror", 2609 | ] 2610 | 2611 | [[package]] 2612 | name = "solana-vote-program" 2613 | version = "1.6.6" 2614 | source = "registry+https://github.com/rust-lang/crates.io-index" 2615 | checksum = "f548472496d6da6f2103af9c2f1b309c46e8764a936f2986ba6cd12382c92870" 2616 | dependencies = [ 2617 | "bincode", 2618 | "log", 2619 | "num-derive", 2620 | "num-traits", 2621 | "rustc_version", 2622 | "serde", 2623 | "serde_derive", 2624 | "solana-frozen-abi", 2625 | "solana-frozen-abi-macro", 2626 | "solana-logger", 2627 | "solana-metrics", 2628 | "solana-sdk", 2629 | "thiserror", 2630 | ] 2631 | 2632 | [[package]] 2633 | name = "solana_rbpf" 2634 | version = "0.2.7" 2635 | source = "registry+https://github.com/rust-lang/crates.io-index" 2636 | checksum = "14e36c51d5aa290416c5dea3c43ac467cb57c0b643184af23e6bdab7434710fb" 2637 | dependencies = [ 2638 | "byteorder", 2639 | "combine", 2640 | "goblin", 2641 | "hash32", 2642 | "libc", 2643 | "log", 2644 | "rand 0.7.3", 2645 | "scroll", 2646 | "thiserror", 2647 | "time", 2648 | ] 2649 | 2650 | [[package]] 2651 | name = "spin" 2652 | version = "0.5.2" 2653 | source = "registry+https://github.com/rust-lang/crates.io-index" 2654 | checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" 2655 | 2656 | [[package]] 2657 | name = "stable_deref_trait" 2658 | version = "1.2.0" 2659 | source = "registry+https://github.com/rust-lang/crates.io-index" 2660 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 2661 | 2662 | [[package]] 2663 | name = "static_assertions" 2664 | version = "1.1.0" 2665 | source = "registry+https://github.com/rust-lang/crates.io-index" 2666 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2667 | 2668 | [[package]] 2669 | name = "subtle" 2670 | version = "1.0.0" 2671 | source = "registry+https://github.com/rust-lang/crates.io-index" 2672 | checksum = "2d67a5a62ba6e01cb2192ff309324cb4875d0c451d55fe2319433abe7a05a8ee" 2673 | 2674 | [[package]] 2675 | name = "subtle" 2676 | version = "2.4.0" 2677 | source = "registry+https://github.com/rust-lang/crates.io-index" 2678 | checksum = "1e81da0851ada1f3e9d4312c704aa4f8806f0f9d69faaf8df2f3464b4a9437c2" 2679 | 2680 | [[package]] 2681 | name = "symlink" 2682 | version = "0.1.0" 2683 | source = "registry+https://github.com/rust-lang/crates.io-index" 2684 | checksum = "a7973cce6668464ea31f176d85b13c7ab3bba2cb3b77a2ed26abd7801688010a" 2685 | 2686 | [[package]] 2687 | name = "syn" 2688 | version = "0.15.44" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "9ca4b3b69a77cbe1ffc9e198781b7acb0c7365a883670e8f1c1bc66fba79a5c5" 2691 | dependencies = [ 2692 | "proc-macro2 0.4.30", 2693 | "quote 0.6.13", 2694 | "unicode-xid 0.1.0", 2695 | ] 2696 | 2697 | [[package]] 2698 | name = "syn" 2699 | version = "1.0.71" 2700 | source = "registry+https://github.com/rust-lang/crates.io-index" 2701 | checksum = "ad184cc9470f9117b2ac6817bfe297307418819ba40552f9b3846f05c33d5373" 2702 | dependencies = [ 2703 | "proc-macro2 1.0.26", 2704 | "quote 1.0.9", 2705 | "unicode-xid 0.2.2", 2706 | ] 2707 | 2708 | [[package]] 2709 | name = "synstructure" 2710 | version = "0.12.4" 2711 | source = "registry+https://github.com/rust-lang/crates.io-index" 2712 | checksum = "b834f2d66f734cb897113e34aaff2f1ab4719ca946f9a7358dba8f8064148701" 2713 | dependencies = [ 2714 | "proc-macro2 1.0.26", 2715 | "quote 1.0.9", 2716 | "syn 1.0.71", 2717 | "unicode-xid 0.2.2", 2718 | ] 2719 | 2720 | [[package]] 2721 | name = "tar" 2722 | version = "0.4.33" 2723 | source = "registry+https://github.com/rust-lang/crates.io-index" 2724 | checksum = "c0bcfbd6a598361fda270d82469fff3d65089dc33e175c9a131f7b4cd395f228" 2725 | dependencies = [ 2726 | "filetime", 2727 | "libc", 2728 | "xattr", 2729 | ] 2730 | 2731 | [[package]] 2732 | name = "tarpc" 2733 | version = "0.24.1" 2734 | source = "registry+https://github.com/rust-lang/crates.io-index" 2735 | checksum = "e325774dd5b35d979e9f4db2b0f0d7d85dc2ff2b676a3150af56c09eafc14b07" 2736 | dependencies = [ 2737 | "anyhow", 2738 | "fnv", 2739 | "futures 0.3.14", 2740 | "humantime", 2741 | "log", 2742 | "pin-project", 2743 | "rand 0.7.3", 2744 | "serde", 2745 | "static_assertions", 2746 | "tarpc-plugins", 2747 | "tokio 1.5.0", 2748 | "tokio-serde", 2749 | "tokio-util", 2750 | ] 2751 | 2752 | [[package]] 2753 | name = "tarpc-plugins" 2754 | version = "0.9.0" 2755 | source = "registry+https://github.com/rust-lang/crates.io-index" 2756 | checksum = "f3240378a22b1195734e085ba71d1d4188d50f034aea82635acc430b7005afb5" 2757 | dependencies = [ 2758 | "proc-macro2 1.0.26", 2759 | "quote 1.0.9", 2760 | "syn 1.0.71", 2761 | ] 2762 | 2763 | [[package]] 2764 | name = "tempfile" 2765 | version = "3.2.0" 2766 | source = "registry+https://github.com/rust-lang/crates.io-index" 2767 | checksum = "dac1c663cfc93810f88aed9b8941d48cabf856a1b111c29a40439018d870eb22" 2768 | dependencies = [ 2769 | "cfg-if 1.0.0", 2770 | "libc", 2771 | "rand 0.8.3", 2772 | "redox_syscall 0.2.7", 2773 | "remove_dir_all", 2774 | "winapi 0.3.9", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "termcolor" 2779 | version = "1.1.2" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "2dfed899f0eb03f32ee8c6a0aabdb8a7949659e3466561fc0adf54e26d88c5f4" 2782 | dependencies = [ 2783 | "winapi-util", 2784 | ] 2785 | 2786 | [[package]] 2787 | name = "thiserror" 2788 | version = "1.0.24" 2789 | source = "registry+https://github.com/rust-lang/crates.io-index" 2790 | checksum = "e0f4a65597094d4483ddaed134f409b2cb7c1beccf25201a9f73c719254fa98e" 2791 | dependencies = [ 2792 | "thiserror-impl", 2793 | ] 2794 | 2795 | [[package]] 2796 | name = "thiserror-impl" 2797 | version = "1.0.24" 2798 | source = "registry+https://github.com/rust-lang/crates.io-index" 2799 | checksum = "7765189610d8241a44529806d6fd1f2e0a08734313a35d5b3a556f92b381f3c0" 2800 | dependencies = [ 2801 | "proc-macro2 1.0.26", 2802 | "quote 1.0.9", 2803 | "syn 1.0.71", 2804 | ] 2805 | 2806 | [[package]] 2807 | name = "time" 2808 | version = "0.1.44" 2809 | source = "registry+https://github.com/rust-lang/crates.io-index" 2810 | checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" 2811 | dependencies = [ 2812 | "libc", 2813 | "wasi 0.10.0+wasi-snapshot-preview1", 2814 | "winapi 0.3.9", 2815 | ] 2816 | 2817 | [[package]] 2818 | name = "tinyvec" 2819 | version = "1.2.0" 2820 | source = "registry+https://github.com/rust-lang/crates.io-index" 2821 | checksum = "5b5220f05bb7de7f3f53c7c065e1199b3172696fe2db9f9c4d8ad9b4ee74c342" 2822 | dependencies = [ 2823 | "tinyvec_macros", 2824 | ] 2825 | 2826 | [[package]] 2827 | name = "tinyvec_macros" 2828 | version = "0.1.0" 2829 | source = "registry+https://github.com/rust-lang/crates.io-index" 2830 | checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" 2831 | 2832 | [[package]] 2833 | name = "tokio" 2834 | version = "0.1.22" 2835 | source = "registry+https://github.com/rust-lang/crates.io-index" 2836 | checksum = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" 2837 | dependencies = [ 2838 | "bytes 0.4.12", 2839 | "futures 0.1.31", 2840 | "mio 0.6.23", 2841 | "num_cpus", 2842 | "tokio-codec", 2843 | "tokio-current-thread", 2844 | "tokio-executor", 2845 | "tokio-fs", 2846 | "tokio-io", 2847 | "tokio-reactor", 2848 | "tokio-sync", 2849 | "tokio-tcp", 2850 | "tokio-threadpool", 2851 | "tokio-timer", 2852 | "tokio-udp", 2853 | "tokio-uds", 2854 | ] 2855 | 2856 | [[package]] 2857 | name = "tokio" 2858 | version = "1.5.0" 2859 | source = "registry+https://github.com/rust-lang/crates.io-index" 2860 | checksum = "83f0c8e7c0addab50b663055baf787d0af7f413a46e6e7fb9559a4e4db7137a5" 2861 | dependencies = [ 2862 | "autocfg", 2863 | "bytes 1.0.1", 2864 | "libc", 2865 | "memchr", 2866 | "mio 0.7.11", 2867 | "num_cpus", 2868 | "once_cell", 2869 | "parking_lot 0.11.1", 2870 | "pin-project-lite", 2871 | "signal-hook-registry", 2872 | "tokio-macros", 2873 | "winapi 0.3.9", 2874 | ] 2875 | 2876 | [[package]] 2877 | name = "tokio-codec" 2878 | version = "0.1.2" 2879 | source = "registry+https://github.com/rust-lang/crates.io-index" 2880 | checksum = "25b2998660ba0e70d18684de5d06b70b70a3a747469af9dea7618cc59e75976b" 2881 | dependencies = [ 2882 | "bytes 0.4.12", 2883 | "futures 0.1.31", 2884 | "tokio-io", 2885 | ] 2886 | 2887 | [[package]] 2888 | name = "tokio-current-thread" 2889 | version = "0.1.7" 2890 | source = "registry+https://github.com/rust-lang/crates.io-index" 2891 | checksum = "b1de0e32a83f131e002238d7ccde18211c0a5397f60cbfffcb112868c2e0e20e" 2892 | dependencies = [ 2893 | "futures 0.1.31", 2894 | "tokio-executor", 2895 | ] 2896 | 2897 | [[package]] 2898 | name = "tokio-executor" 2899 | version = "0.1.10" 2900 | source = "registry+https://github.com/rust-lang/crates.io-index" 2901 | checksum = "fb2d1b8f4548dbf5e1f7818512e9c406860678f29c300cdf0ebac72d1a3a1671" 2902 | dependencies = [ 2903 | "crossbeam-utils 0.7.2", 2904 | "futures 0.1.31", 2905 | ] 2906 | 2907 | [[package]] 2908 | name = "tokio-fs" 2909 | version = "0.1.7" 2910 | source = "registry+https://github.com/rust-lang/crates.io-index" 2911 | checksum = "297a1206e0ca6302a0eed35b700d292b275256f596e2f3fea7729d5e629b6ff4" 2912 | dependencies = [ 2913 | "futures 0.1.31", 2914 | "tokio-io", 2915 | "tokio-threadpool", 2916 | ] 2917 | 2918 | [[package]] 2919 | name = "tokio-io" 2920 | version = "0.1.13" 2921 | source = "registry+https://github.com/rust-lang/crates.io-index" 2922 | checksum = "57fc868aae093479e3131e3d165c93b1c7474109d13c90ec0dda2a1bbfff0674" 2923 | dependencies = [ 2924 | "bytes 0.4.12", 2925 | "futures 0.1.31", 2926 | "log", 2927 | ] 2928 | 2929 | [[package]] 2930 | name = "tokio-macros" 2931 | version = "1.1.0" 2932 | source = "registry+https://github.com/rust-lang/crates.io-index" 2933 | checksum = "caf7b11a536f46a809a8a9f0bb4237020f70ecbf115b842360afb127ea2fda57" 2934 | dependencies = [ 2935 | "proc-macro2 1.0.26", 2936 | "quote 1.0.9", 2937 | "syn 1.0.71", 2938 | ] 2939 | 2940 | [[package]] 2941 | name = "tokio-reactor" 2942 | version = "0.1.12" 2943 | source = "registry+https://github.com/rust-lang/crates.io-index" 2944 | checksum = "09bc590ec4ba8ba87652da2068d150dcada2cfa2e07faae270a5e0409aa51351" 2945 | dependencies = [ 2946 | "crossbeam-utils 0.7.2", 2947 | "futures 0.1.31", 2948 | "lazy_static", 2949 | "log", 2950 | "mio 0.6.23", 2951 | "num_cpus", 2952 | "parking_lot 0.9.0", 2953 | "slab", 2954 | "tokio-executor", 2955 | "tokio-io", 2956 | "tokio-sync", 2957 | ] 2958 | 2959 | [[package]] 2960 | name = "tokio-rustls" 2961 | version = "0.22.0" 2962 | source = "registry+https://github.com/rust-lang/crates.io-index" 2963 | checksum = "bc6844de72e57df1980054b38be3a9f4702aba4858be64dd700181a8a6d0e1b6" 2964 | dependencies = [ 2965 | "rustls", 2966 | "tokio 1.5.0", 2967 | "webpki", 2968 | ] 2969 | 2970 | [[package]] 2971 | name = "tokio-serde" 2972 | version = "0.8.0" 2973 | source = "registry+https://github.com/rust-lang/crates.io-index" 2974 | checksum = "911a61637386b789af998ee23f50aa30d5fd7edcec8d6d3dedae5e5815205466" 2975 | dependencies = [ 2976 | "bincode", 2977 | "bytes 1.0.1", 2978 | "educe", 2979 | "futures-core", 2980 | "futures-sink", 2981 | "pin-project", 2982 | "serde", 2983 | "serde_json", 2984 | ] 2985 | 2986 | [[package]] 2987 | name = "tokio-stream" 2988 | version = "0.1.5" 2989 | source = "registry+https://github.com/rust-lang/crates.io-index" 2990 | checksum = "e177a5d8c3bf36de9ebe6d58537d8879e964332f93fb3339e43f618c81361af0" 2991 | dependencies = [ 2992 | "futures-core", 2993 | "pin-project-lite", 2994 | "tokio 1.5.0", 2995 | ] 2996 | 2997 | [[package]] 2998 | name = "tokio-sync" 2999 | version = "0.1.8" 3000 | source = "registry+https://github.com/rust-lang/crates.io-index" 3001 | checksum = "edfe50152bc8164fcc456dab7891fa9bf8beaf01c5ee7e1dd43a397c3cf87dee" 3002 | dependencies = [ 3003 | "fnv", 3004 | "futures 0.1.31", 3005 | ] 3006 | 3007 | [[package]] 3008 | name = "tokio-tcp" 3009 | version = "0.1.4" 3010 | source = "registry+https://github.com/rust-lang/crates.io-index" 3011 | checksum = "98df18ed66e3b72e742f185882a9e201892407957e45fbff8da17ae7a7c51f72" 3012 | dependencies = [ 3013 | "bytes 0.4.12", 3014 | "futures 0.1.31", 3015 | "iovec", 3016 | "mio 0.6.23", 3017 | "tokio-io", 3018 | "tokio-reactor", 3019 | ] 3020 | 3021 | [[package]] 3022 | name = "tokio-threadpool" 3023 | version = "0.1.18" 3024 | source = "registry+https://github.com/rust-lang/crates.io-index" 3025 | checksum = "df720b6581784c118f0eb4310796b12b1d242a7eb95f716a8367855325c25f89" 3026 | dependencies = [ 3027 | "crossbeam-deque 0.7.3", 3028 | "crossbeam-queue", 3029 | "crossbeam-utils 0.7.2", 3030 | "futures 0.1.31", 3031 | "lazy_static", 3032 | "log", 3033 | "num_cpus", 3034 | "slab", 3035 | "tokio-executor", 3036 | ] 3037 | 3038 | [[package]] 3039 | name = "tokio-timer" 3040 | version = "0.2.13" 3041 | source = "registry+https://github.com/rust-lang/crates.io-index" 3042 | checksum = "93044f2d313c95ff1cb7809ce9a7a05735b012288a888b62d4434fd58c94f296" 3043 | dependencies = [ 3044 | "crossbeam-utils 0.7.2", 3045 | "futures 0.1.31", 3046 | "slab", 3047 | "tokio-executor", 3048 | ] 3049 | 3050 | [[package]] 3051 | name = "tokio-udp" 3052 | version = "0.1.6" 3053 | source = "registry+https://github.com/rust-lang/crates.io-index" 3054 | checksum = "e2a0b10e610b39c38b031a2fcab08e4b82f16ece36504988dcbd81dbba650d82" 3055 | dependencies = [ 3056 | "bytes 0.4.12", 3057 | "futures 0.1.31", 3058 | "log", 3059 | "mio 0.6.23", 3060 | "tokio-codec", 3061 | "tokio-io", 3062 | "tokio-reactor", 3063 | ] 3064 | 3065 | [[package]] 3066 | name = "tokio-uds" 3067 | version = "0.2.7" 3068 | source = "registry+https://github.com/rust-lang/crates.io-index" 3069 | checksum = "ab57a4ac4111c8c9dbcf70779f6fc8bc35ae4b2454809febac840ad19bd7e4e0" 3070 | dependencies = [ 3071 | "bytes 0.4.12", 3072 | "futures 0.1.31", 3073 | "iovec", 3074 | "libc", 3075 | "log", 3076 | "mio 0.6.23", 3077 | "mio-uds", 3078 | "tokio-codec", 3079 | "tokio-io", 3080 | "tokio-reactor", 3081 | ] 3082 | 3083 | [[package]] 3084 | name = "tokio-util" 3085 | version = "0.6.6" 3086 | source = "registry+https://github.com/rust-lang/crates.io-index" 3087 | checksum = "940a12c99365c31ea8dd9ba04ec1be183ffe4920102bb7122c2f515437601e8e" 3088 | dependencies = [ 3089 | "bytes 1.0.1", 3090 | "futures-core", 3091 | "futures-sink", 3092 | "log", 3093 | "pin-project-lite", 3094 | "tokio 1.5.0", 3095 | ] 3096 | 3097 | [[package]] 3098 | name = "toml" 3099 | version = "0.5.8" 3100 | source = "registry+https://github.com/rust-lang/crates.io-index" 3101 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 3102 | dependencies = [ 3103 | "serde", 3104 | ] 3105 | 3106 | [[package]] 3107 | name = "tower-service" 3108 | version = "0.3.1" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "360dfd1d6d30e05fda32ace2c8c70e9c0a9da713275777f5a4dbb8a1893930c6" 3111 | 3112 | [[package]] 3113 | name = "tracing" 3114 | version = "0.1.26" 3115 | source = "registry+https://github.com/rust-lang/crates.io-index" 3116 | checksum = "09adeb8c97449311ccd28a427f96fb563e7fd31aabf994189879d9da2394b89d" 3117 | dependencies = [ 3118 | "cfg-if 1.0.0", 3119 | "pin-project-lite", 3120 | "tracing-core", 3121 | ] 3122 | 3123 | [[package]] 3124 | name = "tracing-core" 3125 | version = "0.1.18" 3126 | source = "registry+https://github.com/rust-lang/crates.io-index" 3127 | checksum = "a9ff14f98b1a4b289c6248a023c1c2fa1491062964e9fed67ab29c4e4da4a052" 3128 | dependencies = [ 3129 | "lazy_static", 3130 | ] 3131 | 3132 | [[package]] 3133 | name = "try-lock" 3134 | version = "0.2.3" 3135 | source = "registry+https://github.com/rust-lang/crates.io-index" 3136 | checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" 3137 | 3138 | [[package]] 3139 | name = "typenum" 3140 | version = "1.13.0" 3141 | source = "registry+https://github.com/rust-lang/crates.io-index" 3142 | checksum = "879f6906492a7cd215bfa4cf595b600146ccfac0c79bcbd1f3000162af5e8b06" 3143 | 3144 | [[package]] 3145 | name = "unicode-bidi" 3146 | version = "0.3.5" 3147 | source = "registry+https://github.com/rust-lang/crates.io-index" 3148 | checksum = "eeb8be209bb1c96b7c177c7420d26e04eccacb0eeae6b980e35fcb74678107e0" 3149 | dependencies = [ 3150 | "matches", 3151 | ] 3152 | 3153 | [[package]] 3154 | name = "unicode-normalization" 3155 | version = "0.1.17" 3156 | source = "registry+https://github.com/rust-lang/crates.io-index" 3157 | checksum = "07fbfce1c8a97d547e8b5334978438d9d6ec8c20e38f56d4a4374d181493eaef" 3158 | dependencies = [ 3159 | "tinyvec", 3160 | ] 3161 | 3162 | [[package]] 3163 | name = "unicode-xid" 3164 | version = "0.1.0" 3165 | source = "registry+https://github.com/rust-lang/crates.io-index" 3166 | checksum = "fc72304796d0818e357ead4e000d19c9c174ab23dc11093ac919054d20a6a7fc" 3167 | 3168 | [[package]] 3169 | name = "unicode-xid" 3170 | version = "0.2.2" 3171 | source = "registry+https://github.com/rust-lang/crates.io-index" 3172 | checksum = "8ccb82d61f80a663efe1f787a51b16b5a51e3314d6ac365b08639f52387b33f3" 3173 | 3174 | [[package]] 3175 | name = "unreachable" 3176 | version = "1.0.0" 3177 | source = "registry+https://github.com/rust-lang/crates.io-index" 3178 | checksum = "382810877fe448991dfc7f0dd6e3ae5d58088fd0ea5e35189655f84e6814fa56" 3179 | dependencies = [ 3180 | "void", 3181 | ] 3182 | 3183 | [[package]] 3184 | name = "untrusted" 3185 | version = "0.7.1" 3186 | source = "registry+https://github.com/rust-lang/crates.io-index" 3187 | checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" 3188 | 3189 | [[package]] 3190 | name = "url" 3191 | version = "2.2.1" 3192 | source = "registry+https://github.com/rust-lang/crates.io-index" 3193 | checksum = "9ccd964113622c8e9322cfac19eb1004a07e636c545f325da085d5cdde6f1f8b" 3194 | dependencies = [ 3195 | "form_urlencoded", 3196 | "idna", 3197 | "matches", 3198 | "percent-encoding", 3199 | ] 3200 | 3201 | [[package]] 3202 | name = "version_check" 3203 | version = "0.9.3" 3204 | source = "registry+https://github.com/rust-lang/crates.io-index" 3205 | checksum = "5fecdca9a5291cc2b8dcf7dc02453fee791a280f3743cb0905f8822ae463b3fe" 3206 | 3207 | [[package]] 3208 | name = "void" 3209 | version = "1.0.2" 3210 | source = "registry+https://github.com/rust-lang/crates.io-index" 3211 | checksum = "6a02e4885ed3bc0f2de90ea6dd45ebcbb66dacffe03547fadbb0eeae2770887d" 3212 | 3213 | [[package]] 3214 | name = "walkdir" 3215 | version = "2.3.2" 3216 | source = "registry+https://github.com/rust-lang/crates.io-index" 3217 | checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" 3218 | dependencies = [ 3219 | "same-file", 3220 | "winapi 0.3.9", 3221 | "winapi-util", 3222 | ] 3223 | 3224 | [[package]] 3225 | name = "want" 3226 | version = "0.3.0" 3227 | source = "registry+https://github.com/rust-lang/crates.io-index" 3228 | checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" 3229 | dependencies = [ 3230 | "log", 3231 | "try-lock", 3232 | ] 3233 | 3234 | [[package]] 3235 | name = "wasi" 3236 | version = "0.9.0+wasi-snapshot-preview1" 3237 | source = "registry+https://github.com/rust-lang/crates.io-index" 3238 | checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" 3239 | 3240 | [[package]] 3241 | name = "wasi" 3242 | version = "0.10.0+wasi-snapshot-preview1" 3243 | source = "registry+https://github.com/rust-lang/crates.io-index" 3244 | checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" 3245 | 3246 | [[package]] 3247 | name = "wasm-bindgen" 3248 | version = "0.2.73" 3249 | source = "registry+https://github.com/rust-lang/crates.io-index" 3250 | checksum = "83240549659d187488f91f33c0f8547cbfef0b2088bc470c116d1d260ef623d9" 3251 | dependencies = [ 3252 | "cfg-if 1.0.0", 3253 | "serde", 3254 | "serde_json", 3255 | "wasm-bindgen-macro", 3256 | ] 3257 | 3258 | [[package]] 3259 | name = "wasm-bindgen-backend" 3260 | version = "0.2.73" 3261 | source = "registry+https://github.com/rust-lang/crates.io-index" 3262 | checksum = "ae70622411ca953215ca6d06d3ebeb1e915f0f6613e3b495122878d7ebec7dae" 3263 | dependencies = [ 3264 | "bumpalo", 3265 | "lazy_static", 3266 | "log", 3267 | "proc-macro2 1.0.26", 3268 | "quote 1.0.9", 3269 | "syn 1.0.71", 3270 | "wasm-bindgen-shared", 3271 | ] 3272 | 3273 | [[package]] 3274 | name = "wasm-bindgen-futures" 3275 | version = "0.4.23" 3276 | source = "registry+https://github.com/rust-lang/crates.io-index" 3277 | checksum = "81b8b767af23de6ac18bf2168b690bed2902743ddf0fb39252e36f9e2bfc63ea" 3278 | dependencies = [ 3279 | "cfg-if 1.0.0", 3280 | "js-sys", 3281 | "wasm-bindgen", 3282 | "web-sys", 3283 | ] 3284 | 3285 | [[package]] 3286 | name = "wasm-bindgen-macro" 3287 | version = "0.2.73" 3288 | source = "registry+https://github.com/rust-lang/crates.io-index" 3289 | checksum = "3e734d91443f177bfdb41969de821e15c516931c3c3db3d318fa1b68975d0f6f" 3290 | dependencies = [ 3291 | "quote 1.0.9", 3292 | "wasm-bindgen-macro-support", 3293 | ] 3294 | 3295 | [[package]] 3296 | name = "wasm-bindgen-macro-support" 3297 | version = "0.2.73" 3298 | source = "registry+https://github.com/rust-lang/crates.io-index" 3299 | checksum = "d53739ff08c8a68b0fdbcd54c372b8ab800b1449ab3c9d706503bc7dd1621b2c" 3300 | dependencies = [ 3301 | "proc-macro2 1.0.26", 3302 | "quote 1.0.9", 3303 | "syn 1.0.71", 3304 | "wasm-bindgen-backend", 3305 | "wasm-bindgen-shared", 3306 | ] 3307 | 3308 | [[package]] 3309 | name = "wasm-bindgen-shared" 3310 | version = "0.2.73" 3311 | source = "registry+https://github.com/rust-lang/crates.io-index" 3312 | checksum = "d9a543ae66aa233d14bb765ed9af4a33e81b8b58d1584cf1b47ff8cd0b9e4489" 3313 | 3314 | [[package]] 3315 | name = "web-sys" 3316 | version = "0.3.50" 3317 | source = "registry+https://github.com/rust-lang/crates.io-index" 3318 | checksum = "a905d57e488fec8861446d3393670fb50d27a262344013181c2cdf9fff5481be" 3319 | dependencies = [ 3320 | "js-sys", 3321 | "wasm-bindgen", 3322 | ] 3323 | 3324 | [[package]] 3325 | name = "webpki" 3326 | version = "0.21.2" 3327 | source = "registry+https://github.com/rust-lang/crates.io-index" 3328 | checksum = "f1f50e1972865d6b1adb54167d1c8ed48606004c2c9d0ea5f1eeb34d95e863ef" 3329 | dependencies = [ 3330 | "ring", 3331 | "untrusted", 3332 | ] 3333 | 3334 | [[package]] 3335 | name = "webpki-roots" 3336 | version = "0.21.1" 3337 | source = "registry+https://github.com/rust-lang/crates.io-index" 3338 | checksum = "aabe153544e473b775453675851ecc86863d2a81d786d741f6b76778f2a48940" 3339 | dependencies = [ 3340 | "webpki", 3341 | ] 3342 | 3343 | [[package]] 3344 | name = "winapi" 3345 | version = "0.2.8" 3346 | source = "registry+https://github.com/rust-lang/crates.io-index" 3347 | checksum = "167dc9d6949a9b857f3451275e911c3f44255842c1f7a76f33c55103a909087a" 3348 | 3349 | [[package]] 3350 | name = "winapi" 3351 | version = "0.3.9" 3352 | source = "registry+https://github.com/rust-lang/crates.io-index" 3353 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3354 | dependencies = [ 3355 | "winapi-i686-pc-windows-gnu", 3356 | "winapi-x86_64-pc-windows-gnu", 3357 | ] 3358 | 3359 | [[package]] 3360 | name = "winapi-build" 3361 | version = "0.1.1" 3362 | source = "registry+https://github.com/rust-lang/crates.io-index" 3363 | checksum = "2d315eee3b34aca4797b2da6b13ed88266e6d612562a0c46390af8299fc699bc" 3364 | 3365 | [[package]] 3366 | name = "winapi-i686-pc-windows-gnu" 3367 | version = "0.4.0" 3368 | source = "registry+https://github.com/rust-lang/crates.io-index" 3369 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3370 | 3371 | [[package]] 3372 | name = "winapi-util" 3373 | version = "0.1.5" 3374 | source = "registry+https://github.com/rust-lang/crates.io-index" 3375 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 3376 | dependencies = [ 3377 | "winapi 0.3.9", 3378 | ] 3379 | 3380 | [[package]] 3381 | name = "winapi-x86_64-pc-windows-gnu" 3382 | version = "0.4.0" 3383 | source = "registry+https://github.com/rust-lang/crates.io-index" 3384 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3385 | 3386 | [[package]] 3387 | name = "winreg" 3388 | version = "0.7.0" 3389 | source = "registry+https://github.com/rust-lang/crates.io-index" 3390 | checksum = "0120db82e8a1e0b9fb3345a539c478767c0048d842860994d96113d5b667bd69" 3391 | dependencies = [ 3392 | "winapi 0.3.9", 3393 | ] 3394 | 3395 | [[package]] 3396 | name = "ws2_32-sys" 3397 | version = "0.2.1" 3398 | source = "registry+https://github.com/rust-lang/crates.io-index" 3399 | checksum = "d59cefebd0c892fa2dd6de581e937301d8552cb44489cdff035c6187cb63fa5e" 3400 | dependencies = [ 3401 | "winapi 0.2.8", 3402 | "winapi-build", 3403 | ] 3404 | 3405 | [[package]] 3406 | name = "xattr" 3407 | version = "0.2.2" 3408 | source = "registry+https://github.com/rust-lang/crates.io-index" 3409 | checksum = "244c3741f4240ef46274860397c7c74e50eb23624996930e484c16679633a54c" 3410 | dependencies = [ 3411 | "libc", 3412 | ] 3413 | 3414 | [[package]] 3415 | name = "zeroize" 3416 | version = "1.3.0" 3417 | source = "registry+https://github.com/rust-lang/crates.io-index" 3418 | checksum = "4756f7db3f7b5574938c3eb1c117038b8e07f95ee6718c0efad4ac21508f1efd" 3419 | dependencies = [ 3420 | "zeroize_derive", 3421 | ] 3422 | 3423 | [[package]] 3424 | name = "zeroize_derive" 3425 | version = "1.1.0" 3426 | source = "registry+https://github.com/rust-lang/crates.io-index" 3427 | checksum = "a2c1e130bebaeab2f23886bf9acbaca14b092408c452543c857f66399cd6dab1" 3428 | dependencies = [ 3429 | "proc-macro2 1.0.26", 3430 | "quote 1.0.9", 3431 | "syn 1.0.71", 3432 | "synstructure", 3433 | ] 3434 | 3435 | [[package]] 3436 | name = "zstd" 3437 | version = "0.5.4+zstd.1.4.7" 3438 | source = "registry+https://github.com/rust-lang/crates.io-index" 3439 | checksum = "69996ebdb1ba8b1517f61387a883857818a66c8a295f487b1ffd8fd9d2c82910" 3440 | dependencies = [ 3441 | "zstd-safe", 3442 | ] 3443 | 3444 | [[package]] 3445 | name = "zstd-safe" 3446 | version = "2.0.6+zstd.1.4.7" 3447 | source = "registry+https://github.com/rust-lang/crates.io-index" 3448 | checksum = "98aa931fb69ecee256d44589d19754e61851ae4769bf963b385119b1cc37a49e" 3449 | dependencies = [ 3450 | "libc", 3451 | "zstd-sys", 3452 | ] 3453 | 3454 | [[package]] 3455 | name = "zstd-sys" 3456 | version = "1.4.18+zstd.1.4.7" 3457 | source = "registry+https://github.com/rust-lang/crates.io-index" 3458 | checksum = "a1e6e8778706838f43f771d80d37787cb2fe06dafe89dd3aebaf6721b9eaec81" 3459 | dependencies = [ 3460 | "cc", 3461 | "glob", 3462 | "itertools", 3463 | "libc", 3464 | ] 3465 | -------------------------------------------------------------------------------- /src/program-rust/Cargo.toml: -------------------------------------------------------------------------------- 1 | 2 | [package] 3 | name = "solana-bpf-helloworld" 4 | version = "0.0.1" 5 | description = "Example template program written in Rust" 6 | authors = ["Solana Maintainers "] 7 | repository = "https://github.com/solana-labs/solana" 8 | license = "Apache-2.0" 9 | homepage = "https://solana.com/" 10 | edition = "2018" 11 | 12 | [features] 13 | no-entrypoint = [] 14 | 15 | [dependencies] 16 | borsh = "0.7.1" 17 | borsh-derive = "0.8.1" 18 | solana-program = "=1.6.6" 19 | 20 | [dev-dependencies] 21 | solana-program-test = "=1.6.6" 22 | solana-sdk = "=1.6.6" 23 | 24 | [lib] 25 | name = "helloworld" 26 | crate-type = ["cdylib", "lib"] 27 | -------------------------------------------------------------------------------- /src/program-rust/Xargo.toml: -------------------------------------------------------------------------------- 1 | [target.bpfel-unknown-unknown.dependencies.std] 2 | features = [] -------------------------------------------------------------------------------- /src/program-rust/src/lib.rs: -------------------------------------------------------------------------------- 1 | use borsh::{BorshDeserialize, BorshSerialize}; 2 | use solana_program::{ 3 | log::sol_log_compute_units, 4 | account_info::{next_account_info, AccountInfo}, 5 | entrypoint, 6 | entrypoint::ProgramResult, 7 | msg, 8 | program_error::ProgramError, 9 | pubkey::Pubkey, 10 | }; 11 | 12 | /// Define the type of state stored in accounts 13 | #[derive(BorshSerialize, BorshDeserialize, Debug)] 14 | pub struct GreetingAccount { 15 | /// number of greetings 16 | pub txt: String, 17 | } 18 | 19 | // Declare and export the program's entrypoint 20 | entrypoint!(process_instruction); 21 | 22 | // Program entrypoint's implementation 23 | pub fn process_instruction( 24 | program_id: &Pubkey, // Public key of the account the hello world program was loaded into 25 | accounts: &[AccountInfo], // The account to say hello to 26 | instruction_data: &[u8], // Ignored, all helloworld instructions are hellos 27 | ) -> ProgramResult { 28 | msg!("Hello World Rust program entrypoint"); 29 | 30 | // Iterating accounts is safer then indexing 31 | let accounts_iter = &mut accounts.iter(); 32 | 33 | // Get the account to say hello to 34 | let account = next_account_info(accounts_iter)?; 35 | 36 | // The account must be owned by the program in order to modify its data 37 | if account.owner != program_id { 38 | msg!("Greeted account does not have the correct program id"); 39 | return Err(ProgramError::IncorrectProgramId); 40 | } 41 | 42 | msg!("Start instruction decode"); 43 | let message = GreetingAccount::try_from_slice(instruction_data).map_err(|err| { 44 | msg!("Receiving message as string utf8 failed, {:?}", err); 45 | ProgramError::InvalidInstructionData 46 | })?; 47 | msg!("Greeting passed to program is {:?}", message); 48 | 49 | let data = &mut &mut account.data.borrow_mut(); 50 | msg!("Start save instruction into data"); 51 | data[..instruction_data.len()].copy_from_slice(&instruction_data); 52 | 53 | sol_log_compute_units(); 54 | msg!("Was sent message {}!", message.txt); 55 | 56 | Ok(()) 57 | } 58 | 59 | // Sanity tests 60 | #[cfg(test)] 61 | mod test { 62 | use super::*; 63 | use solana_program::clock::Epoch; 64 | use std::mem; 65 | 66 | #[test] 67 | fn test_sanity() { 68 | let program_id = Pubkey::default(); 69 | let key = Pubkey::default(); 70 | let mut lamports = 0; 71 | let mut data = vec![0; mem::size_of::()]; 72 | let owner = Pubkey::default(); 73 | let account = AccountInfo::new( 74 | &key, 75 | false, 76 | true, 77 | &mut lamports, 78 | &mut data, 79 | &owner, 80 | false, 81 | Epoch::default(), 82 | ); 83 | let instruction_data: Vec = Vec::new(); 84 | 85 | let accounts = vec![account]; 86 | 87 | assert_eq!( 88 | GreetingAccount::try_from_slice(&accounts[0].data.borrow()) 89 | .unwrap() 90 | .counter, 91 | 0 92 | ); 93 | process_instruction(&program_id, &accounts, &instruction_data).unwrap(); 94 | assert_eq!( 95 | GreetingAccount::try_from_slice(&accounts[0].data.borrow()) 96 | .unwrap() 97 | .counter, 98 | 1 99 | ); 100 | process_instruction(&program_id, &accounts, &instruction_data).unwrap(); 101 | assert_eq!( 102 | GreetingAccount::try_from_slice(&accounts[0].data.borrow()) 103 | .unwrap() 104 | .counter, 105 | 2 106 | ); 107 | } 108 | } 109 | -------------------------------------------------------------------------------- /src/program-rust/tests/lib.rs: -------------------------------------------------------------------------------- 1 | use borsh::BorshDeserialize; 2 | use helloworld::{process_instruction, GreetingAccount}; 3 | use solana_program_test::*; 4 | use solana_sdk::{ 5 | account::Account, 6 | instruction::{AccountMeta, Instruction}, 7 | pubkey::Pubkey, 8 | signature::Signer, 9 | transaction::Transaction, 10 | }; 11 | use std::mem; 12 | 13 | #[tokio::test] 14 | async fn test_helloworld() { 15 | let program_id = Pubkey::new_unique(); 16 | let greeted_pubkey = Pubkey::new_unique(); 17 | 18 | let mut program_test = ProgramTest::new( 19 | "helloworld", // Run the BPF version with `cargo test-bpf` 20 | program_id, 21 | processor!(process_instruction), // Run the native version with `cargo test` 22 | ); 23 | program_test.add_account( 24 | greeted_pubkey, 25 | Account { 26 | lamports: 5, 27 | data: vec![0_u8; mem::size_of::()], 28 | owner: program_id, 29 | ..Account::default() 30 | }, 31 | ); 32 | let (mut banks_client, payer, recent_blockhash) = program_test.start().await; 33 | 34 | // Verify account has zero greetings 35 | let greeted_account = banks_client 36 | .get_account(greeted_pubkey) 37 | .await 38 | .expect("get_account") 39 | .expect("greeted_account not found"); 40 | assert_eq!( 41 | GreetingAccount::try_from_slice(&greeted_account.data) 42 | .unwrap() 43 | .counter, 44 | 0 45 | ); 46 | 47 | // Greet once 48 | let mut transaction = Transaction::new_with_payer( 49 | &[Instruction::new_with_bincode( 50 | program_id, 51 | &[0], // ignored but makes the instruction unique in the slot 52 | vec![AccountMeta::new(greeted_pubkey, false)], 53 | )], 54 | Some(&payer.pubkey()), 55 | ); 56 | transaction.sign(&[&payer], recent_blockhash); 57 | banks_client.process_transaction(transaction).await.unwrap(); 58 | 59 | // Verify account has one greeting 60 | let greeted_account = banks_client 61 | .get_account(greeted_pubkey) 62 | .await 63 | .expect("get_account") 64 | .expect("greeted_account not found"); 65 | assert_eq!( 66 | GreetingAccount::try_from_slice(&greeted_account.data) 67 | .unwrap() 68 | .counter, 69 | 1 70 | ); 71 | 72 | // Greet again 73 | let mut transaction = Transaction::new_with_payer( 74 | &[Instruction::new_with_bincode( 75 | program_id, 76 | &[1], // ignored but makes the instruction unique in the slot 77 | vec![AccountMeta::new(greeted_pubkey, false)], 78 | )], 79 | Some(&payer.pubkey()), 80 | ); 81 | transaction.sign(&[&payer], recent_blockhash); 82 | banks_client.process_transaction(transaction).await.unwrap(); 83 | 84 | // Verify account has two greetings 85 | let greeted_account = banks_client 86 | .get_account(greeted_pubkey) 87 | .await 88 | .expect("get_account") 89 | .expect("greeted_account not found"); 90 | assert_eq!( 91 | GreetingAccount::try_from_slice(&greeted_account.data) 92 | .unwrap() 93 | .counter, 94 | 2 95 | ); 96 | } 97 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "@tsconfig/recommended/tsconfig.json", 3 | "ts-node": { 4 | "compilerOptions": { 5 | "module": "commonjs" 6 | } 7 | }, 8 | "compilerOptions": { 9 | "declaration": true, 10 | "moduleResolution": "node", 11 | "module": "es2015" 12 | }, 13 | "include": ["src/client/**/*"], 14 | "exclude": ["node_modules"] 15 | } 16 | --------------------------------------------------------------------------------