From dbe55a18102511e9006f3c621e7d75f20d7def83 Mon Sep 17 00:00:00 2001 From: collin <16715212+collinc97@users.noreply.github.com> Date: Wed, 4 Oct 2023 00:44:01 -0400 Subject: [PATCH 1/4] fix explorer link --- documentation/sdk/typescript/00_sdk_overview.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/sdk/typescript/00_sdk_overview.md b/documentation/sdk/typescript/00_sdk_overview.md index ab3d20e96..799ed5cc6 100644 --- a/documentation/sdk/typescript/00_sdk_overview.md +++ b/documentation/sdk/typescript/00_sdk_overview.md @@ -668,7 +668,7 @@ A full example of this implementation can be found [here](https://github.com/Ale The official token of operation of the Aleo Network are Aleo credits. Aleo credits are used to pay all fees for program execution on the Aleo network. -Aleo credits are defined in the [credits.aleo](https://www.aleo.network/programs/credits.aleo) program. This program is +Aleo credits are defined in the [credits.aleo](https://explorer.aleo.org/program/credits.aleo) program. This program is deployed to the Aleo Network and defines data structures representing Aleo credits and the functions used to manage them. There are two ways to hold Aleo credits. From 19135b5a255c2a8dfe352d4136d7f2cda3ab3e03 Mon Sep 17 00:00:00 2001 From: frank-aleo <123924409+frank-aleo@users.noreply.github.com> Date: Tue, 3 Oct 2023 21:59:34 -0700 Subject: [PATCH 2/4] React Leo Tutorial Upgrades (#287) * add tutorial changes to incorporate leo installation from sdk pr * update recap * add get contributor badge * fix explorer links --------- Co-authored-by: collin <16715212+collinc97@users.noreply.github.com> --- .../01_create_aleo_app_react_leo_tutorial.md | 98 +++++++++++++++--- .../images/generate-account.png | Bin 42674 -> 0 bytes .../sdk/typescript/00_sdk_overview.md | 10 +- 3 files changed, 92 insertions(+), 16 deletions(-) delete mode 100644 documentation/sdk/create-aleo-app/images/generate-account.png diff --git a/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md b/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md index 3ddf667ea..c60eca95e 100644 --- a/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md +++ b/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md @@ -18,15 +18,16 @@ Navigate to the project you just installed. ```bash cd aleo-project npm install +npm run install-leo npm run dev ``` -This starts a local instance of your React application at http://localhost:5173. +This installs all the required modules and also Leo, our statically-typed programming language built for writing private applications. Lastly, we've initialized a local instance of your React application at http://localhost:5173. `src/App.jsx` contains the main body of your React application. -The `helloworld` folder is your Leo program. This is where you’ll use Leo, our statically-typed programming language built for writing private applications. +The `helloworld` folder is your Leo program. This is where you’ll use Leo. `src/workers/worker.js` is the WebAssembly (WASM) module that we'll be initializing for deployment and execution of Leo programs. @@ -50,12 +51,12 @@ Let’s deploy the `helloworld` program. Deployment requires an account with Ale ### Account Generation -You can generate an account on the React application itself, or head over to [aleo.tools/account](https://aleo.tools/account) and hit “generate”. +```bash +leo account new +``` Write down your private key, view key, and public address in a safe place. Treat your private and view keys as keys you should never share with anyone else. -![generate-account](./images/generate-account.png) - ### Faucet Once you have your account, use our faucet to get some Aleo credits! If you haven’t joined yet, go [Discord channel](https://discord.com/invite/SMXsDEQ) and join the `#faucet` channel. You can send only one request every 20 minutes and can only request 50 credits per hour. Once you send a faucet request, Discord will start a thread under the faucet channel with your request. @@ -78,16 +79,48 @@ Transfer successful! for message ID: 1156693507768078496 https://apiv2.aleo.network/testnet3/transaction/at12u62xwfew2rq32xee8nwhtlxghfjz7mm3528yj240nuezue625fqy4lhlp ``` -### The `helloworld` Program +### Leo & `helloworld` + +If we try to deploy right now, deployment will fail because `helloworld` has already been deployed before. It's as simple as changing the program name, but let's use Leo to create and build an entirely new program. + +```bash +leo new helloworld_[randomsuffix] +cd helloworld_[randomsuffix] +``` + +After you've generated your new `helloworld` project, you can delete the original `helloworld` folder. + +You'll notice the React App now errors out. Navigate to the home directory of your React application and open `App.jsx`. Change the folder name on line 5 from `helloworld` to the name of your new Leo project to get rid of the error: + +```bash +import helloworld_program from "../helloworld_[randomsuffix]/build/main.aleo?raw"; +``` + +Let's dig in a little more. Navigate back to your Leo project and Add your private key to the `.env` in your new Aleo project. Replace the example private key with the one you saved above. + +```bash +NETWORK=testnet3 +PRIVATE_KEY=APrivateKey1zkp2FCZZ7ucNVx5hoofizpq18mvCZNKTpqKMTt1wTahmxSf +``` + +Once you've done this, within the root of your new Leo project, you can locally execute your Leo program while developing it: + +```bash +leo run ## compiles leo to aleo instructions and executes program functions with input variables + +leo execute ## compiles leo to aleo instructions, executes a program with input variables, synthesizes the program circuit, and generates proving and verifying keys -Since `helloworld` has already been deployed before, let’s change the name of your helloworld program by adding a suffix. You’ll want to change the code `helloworld.aleo` to `helloworld_[randomsuffix].aleo` in four files: +leo help ## you know what this does +``` -1. `helloworld/src/main.leo` -2. `helloworld/src/program.json` -3. `helloworld/build/main.leo` -4. `helloworld/build/program.json` +You can try it yourself and observe the outputs in the terminal. -You won’t have to do this when actually developing a Leo program - source files compile to the build in the Leo language, but for now, let’s just change the names to move forward. +```bash +leo run main +leo execute main +``` + +Let's get back to deploying! When you deploy a program, the record that you requested from the faucet is the one that will be used in order to pay for deployment. Looking in `App.jsx`, the web worker is called in order to start the deployment. Following that to `src/workers/worker.js` we see that the WASM is initalized, which allows for computation to run efficiently in the browser, and that the program manager contains methods for authoring, deploying, and interacting with Aleo programs. @@ -139,16 +172,51 @@ Now you can hit the deploy button! Success, you’ve deployed an Aleo program and can how create a decentralized, private application! +## Claim your Leo Contributor Badge! +Making it through this tutorial was no easy task, so because you've done it, we'd love to honor you with a Leo contributor badge on Github! + +### Pushing your Leo Application to Github + +1. Let's get to your project's directory, initialize, and commit your application. + +```bash +cd aleo-project +git init -b main +git add . +git commit -m "first commit, new aleo app" +``` + +2. Create a new repository on your [github.com](https://github.com/new) account by hitting "new repository" in the top right. Set the repo to public, and don't worry about adding a README, license, or .gitignore files. You can add these files after your project has been pushed to GitHub. + +3. At the top of the page your new repository, click to copy the remote repository URL and go back to your terminal to link your local project to this repository. + +![ ](https://docs.github.com/assets/cb-48149/mw-1440/images/help/repository/copy-remote-repository-url-quick-setup.webp) + +```bash +git remote add origin +git remote -v +git push -u origin main +``` + +### Claim your Leo badge +1. Go to the Leo repo issues tab [here](https://github.com/AleoHQ/leo/issues/new/choose) +2. Go to 🥇 "Badge" and click "Get Started". +3. Follow the brief instructions and submit. +4. Once your issue is approved, we will add you to the [contributors section](https://github.com/AleoHQ/leo#%EF%B8%8F-contributors) of the Leo README.md file. + +Congratulations on becoming a Leo contributor! 🎉 + ## Recap & Additional Resources 1. We packaged a React template for you with Leo. -2. [Leo](https://developer.aleo.org/leo/) is our statically-typed programming language built for writing private applications. +2. You also installed [Leo](https://developer.aleo.org/leo/), our statically-typed programming language built for writing private applications. Using Leo, you can write, build, compile, and execute Leo programs locally. -3. We provided the Leo program `helloworld` already pre-compiled into Aleo instructions and then executed locally using WASM + web workers which was an abstraction on snarkVM’s capabilities. [snarkVM](https://developer.aleo.org/aleo/) is the data execution layer. It is used to compile Leo programs and execute them locally off-chain. All Leo programs eventually become Aleo instructions via Aleo’s compiler during the execution phase of snarkVM. +3. We provided the `helloworld` Leo program already pre-compiled into Aleo instructions and then executed it locally using WASM + web workers, which was an abstraction on snarkVM’s capabilities. [snarkVM](https://developer.aleo.org/aleo/) is the data execution layer. It is used to compile Leo programs and execute them locally off-chain. All Leo programs eventually become Aleo instructions via Aleo’s compiler during the execution phase of snarkVM. 4. Similarly, we deployed the `helloworld` program, again using the WASM + web workers abstraction layer but you can also deploy programs on-chain using [snarkOS](https://developer.aleo.org/testnet/getting_started/deploy_execute/#deploy), the data availability layer or blockchain / distributed ledger. 5. During the tutorial you navigated to [aleo.tools](https://aleo.tools), which is the graphical interface to our SDK, which serves as an abstraction layer of snarkOS and snarkVM. You’ll find you can perform similar actions (compiling, executing, deploying) on aleo.tools. -6. The entire React template along with the WASM and web workers can also be considered an abstraction layer of snarkOS and snarkVM. \ No newline at end of file +6. The entire React template along with the WASM and web workers can also be considered an abstraction layer of snarkOS and snarkVM. This makes it easier than ever to spin up a dApp using React & Leo. + diff --git a/documentation/sdk/create-aleo-app/images/generate-account.png b/documentation/sdk/create-aleo-app/images/generate-account.png deleted file mode 100644 index f45151c4c4b5c4ca4cffc2dce6670905bbca8067..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42674 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 diff --git a/documentation/sdk/typescript/00_sdk_overview.md b/documentation/sdk/typescript/00_sdk_overview.md index 799ed5cc6..cefedac89 100644 --- a/documentation/sdk/typescript/00_sdk_overview.md +++ b/documentation/sdk/typescript/00_sdk_overview.md @@ -668,9 +668,13 @@ A full example of this implementation can be found [here](https://github.com/Ale The official token of operation of the Aleo Network are Aleo credits. Aleo credits are used to pay all fees for program execution on the Aleo network. + + Aleo credits are defined in the [credits.aleo](https://explorer.aleo.org/program/credits.aleo) program. This program is deployed to the Aleo Network and defines data structures representing Aleo credits and the functions used to manage them. + + There are two ways to hold Aleo credits. #### 1 - Private balances via credits.aleo records @@ -841,10 +845,14 @@ representing a user. A straightforward example of a usage of records in a program can be demonstrated by explaining the process of private value transfers of official Aleo credits on the Aleo network. + + Aleo credits are the official token in which all on-chain execution and deployment fees are paid. Credits can be public -or private. Private credits are represented by the `credits` record in the [credits.aleo](https://www.aleo.network/programs/credits.aleo) +or private. Private credits are represented by the `credits` record in the [credits.aleo](https://explorer.aleo.org/programs/credits.aleo) program. + + ``` record credits: owner as address.private; From 27e34c7256549e209f93d820d07eae546cdfefe1 Mon Sep 17 00:00:00 2001 From: Caleb Curry Date: Wed, 4 Oct 2023 01:00:05 -0400 Subject: [PATCH 3/4] Update 00_app_installation.md (#289) remove terminal prompt to fix copy/paste Signed-off-by: Caleb Curry --- documentation/sdk/create-aleo-app/00_app_installation.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/sdk/create-aleo-app/00_app_installation.md b/documentation/sdk/create-aleo-app/00_app_installation.md index 3f494019d..687535e64 100644 --- a/documentation/sdk/create-aleo-app/00_app_installation.md +++ b/documentation/sdk/create-aleo-app/00_app_installation.md @@ -16,7 +16,7 @@ sidebar_label: Installation With NPM: ```bash -$ npm create aleo-app@latest +npm create aleo-app@latest ``` Then follow the prompts! @@ -39,4 +39,4 @@ You can use `.` for the project name to scaffold in the current directory. ## More Information -Based off of create-vite: https://github.com/vitejs/vite/tree/main/packages/create-vite \ No newline at end of file +Based off of create-vite: https://github.com/vitejs/vite/tree/main/packages/create-vite From 94b4133d02333cc651e8ed08376319db2e54f54f Mon Sep 17 00:00:00 2001 From: Caleb Curry Date: Wed, 4 Oct 2023 01:01:07 -0400 Subject: [PATCH 4/4] Update 01_create_aleo_app_react_leo_tutorial.md (#290) Fix wording update link to discord vanity URL Signed-off-by: Caleb Curry Signed-off-by: Collin Chin <16715212+collinc97@users.noreply.github.com> Co-authored-by: Collin Chin <16715212+collinc97@users.noreply.github.com> --- .../create-aleo-app/01_create_aleo_app_react_leo_tutorial.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md b/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md index c60eca95e..d8ed25a89 100644 --- a/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md +++ b/documentation/sdk/create-aleo-app/01_create_aleo_app_react_leo_tutorial.md @@ -59,7 +59,7 @@ Write down your private key, view key, and public address in a safe place. Treat ### Faucet -Once you have your account, use our faucet to get some Aleo credits! If you haven’t joined yet, go [Discord channel](https://discord.com/invite/SMXsDEQ) and join the `#faucet` channel. You can send only one request every 20 minutes and can only request 50 credits per hour. Once you send a faucet request, Discord will start a thread under the faucet channel with your request. +Once you have your account, use our faucet to get some Aleo credits! If you haven’t already, join our [Discord server](https://discord.gg/aleohq) and use the `#faucet` channel. You can send only one request every 20 minutes and can only request 50 credits per hour. Once you send a faucet request, Discord will start a thread under the faucet channel with your request. Format: @@ -218,5 +218,5 @@ Congratulations on becoming a Leo contributor! 🎉 5. During the tutorial you navigated to [aleo.tools](https://aleo.tools), which is the graphical interface to our SDK, which serves as an abstraction layer of snarkOS and snarkVM. You’ll find you can perform similar actions (compiling, executing, deploying) on aleo.tools. -6. The entire React template along with the WASM and web workers can also be considered an abstraction layer of snarkOS and snarkVM. This makes it easier than ever to spin up a dApp using React & Leo. +6. The entire React template along with the WASM and web workers can also be considered an abstraction layer of snarkOS and snarkVM.