Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Pre mainnet restructure #644

Merged
merged 110 commits into from
Jan 9, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
110 commits
Select commit Hold shift + click to select a range
3949c1f
docs: rename "fundamentals and concepts" to "soroban internals"
ElliotFriend Nov 8, 2023
d9e76f5
docs: remove old "under the hood" section
ElliotFriend Nov 8, 2023
7bf4bb5
docs: add tags to the various tutorials
ElliotFriend Nov 8, 2023
09519bc
docs: move tutorials into one main directory
ElliotFriend Nov 8, 2023
912f524
fix broken links to old pages
ElliotFriend Nov 8, 2023
7e32c19
docs: renaming soroban internals in category file
ElliotFriend Nov 8, 2023
084f3ca
docs: remove old "command line reference" category
ElliotFriend Nov 8, 2023
6877e3b
docs: add tokens directory, rearrange sidebars
ElliotFriend Nov 8, 2023
6c77040
docs: rearrange migration from evm guide
ElliotFriend Nov 8, 2023
f929a95
docs: remove unused reference/interfaces category
ElliotFriend Nov 8, 2023
d44e998
docs: move "reference" section to "resources"
ElliotFriend Nov 8, 2023
eb1b934
docs: move "releases" page up a level
ElliotFriend Nov 8, 2023
6dd5345
docs: move FAQ page up one level
ElliotFriend Nov 8, 2023
b2b3def
docs: move dev tools into resources directory
ElliotFriend Nov 8, 2023
b024b7a
docs: move testnet.mdx to networks.mdx
ElliotFriend Nov 8, 2023
7c4f8ac
docs: rearrange items in resources directory
ElliotFriend Nov 8, 2023
ec542cb
docs: collapse various SDK pages into two pages
ElliotFriend Nov 8, 2023
8585b4c
docs: move data-providers up one level
ElliotFriend Nov 8, 2023
39f3222
docs: remove some empty categories, move the tutorial template
ElliotFriend Nov 8, 2023
e14b1ae
docs: add a new getting-started page, reorganize that section
ElliotFriend Nov 8, 2023
ddafbb9
docs: change sidebar position integers in soroban-internals
ElliotFriend Nov 8, 2023
5d3c76d
docs: shuffling contract interaction around in soroban-internals
ElliotFriend Nov 8, 2023
463ac20
style: fixing a couple small markdown nits in dapps directory
ElliotFriend Nov 8, 2023
4483a79
docs: fix a broken link
ElliotFriend Nov 8, 2023
347a159
feat: start to the "guides" page(s)
ElliotFriend Nov 8, 2023
10748f2
style(lint): fixing a small linting error
ElliotFriend Nov 8, 2023
a362d3b
remove guides placeholder
ElliotFriend Nov 8, 2023
2b562ce
fixing broken links
ElliotFriend Nov 8, 2023
7fd260d
work on guides listing. might revert this
ElliotFriend Nov 9, 2023
048a3c5
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Nov 17, 2023
69fd7dc
formatting mdx
ElliotFriend Nov 17, 2023
29b8b6b
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Nov 20, 2023
0f7fbc2
docs: fixing a broken link to tutorials
ElliotFriend Nov 20, 2023
8ac467d
style: crack at making the tutorials filterable and hidden in the sid…
ElliotFriend Nov 21, 2023
ac4f176
customizing some components for the `/guides` pages and layouts
ElliotFriend Nov 22, 2023
35b25c4
rename index page for guides to README
ElliotFriend Nov 22, 2023
f47dbc9
remove commented configuration option
ElliotFriend Nov 22, 2023
14d9bbf
remove some console logging in components
ElliotFriend Nov 22, 2023
496dd22
change name of index page in guides sidebar
ElliotFriend Nov 22, 2023
ed09632
remove commented sidebar generation code
ElliotFriend Nov 22, 2023
6595dc1
remove comments and add description to sidebar generator
ElliotFriend Nov 22, 2023
e275f43
rename sidebar generator file
ElliotFriend Nov 22, 2023
2689304
more work on how the 'guides' pages might look.
ElliotFriend Nov 27, 2023
6971796
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Nov 27, 2023
e5c04b4
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Nov 27, 2023
92062a9
docs: adjusting sidebar positions of new getting started pages
ElliotFriend Nov 27, 2023
4f1a03d
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Nov 27, 2023
8388d62
fix some broken links in the getting-started section
ElliotFriend Nov 28, 2023
0d7cc8a
prefer "README.mdx" files where possible
ElliotFriend Nov 28, 2023
690c880
some more guides placeholder stubs
ElliotFriend Nov 28, 2023
4bd5c71
docs(guides): More placeholder stubs for guides and categories
ElliotFriend Nov 28, 2023
e00dcde
feat: don't display "guides in category" page on `/guides`
ElliotFriend Nov 28, 2023
c26d553
build: check/fix MDX formatting in more directories than just docs
ElliotFriend Nov 28, 2023
36f2622
style: add a larger margin before more category guides
ElliotFriend Nov 28, 2023
3655285
style: more selectively increase that top margin
ElliotFriend Nov 28, 2023
0fdda9a
docs(guides): a quick stab at a "publishing" events guide
ElliotFriend Nov 28, 2023
653aaa2
docs(guides): first stab at the "publish events" guide
ElliotFriend Nov 28, 2023
e2f1569
docs: updating tutorial descriptions
ElliotFriend Nov 28, 2023
b9ab766
fix a few broken links
ElliotFriend Nov 28, 2023
0f2a131
docs: add note about a tuple with one element
ElliotFriend Nov 28, 2023
a304482
style: couple link changes and reformats
ElliotFriend Nov 28, 2023
3cab1a2
move fuzzing tutorial back
ElliotFriend Nov 28, 2023
403780b
change to README file in contract interactions category
ElliotFriend Nov 28, 2023
31fc76f
docs(guides): give a better title for the wasm metadata guide
ElliotFriend Nov 28, 2023
b05b2d9
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 4, 2023
d52e545
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 5, 2023
41877d6
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 5, 2023
6482e34
fixing some broken markdown links
ElliotFriend Dec 5, 2023
60cbf2b
fix (another!) broken link
ElliotFriend Dec 5, 2023
7e6a950
move the guides back into the main layout of the docs directory
ElliotFriend Dec 6, 2023
882a19a
add placeholder for testnet reset automation stuff
ElliotFriend Dec 8, 2023
b4e7746
some initial content for some guides
ElliotFriend Dec 12, 2023
addfb82
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 12, 2023
aa99740
markdown formatting and fixing broken links
ElliotFriend Dec 12, 2023
44d08a6
moving "resources" back to "reference" to fit the definition better
ElliotFriend Dec 12, 2023
44aef74
change some styles of the tutorial list
ElliotFriend Dec 12, 2023
e2f03d0
removing most category pages
ElliotFriend Dec 12, 2023
416a2d5
some more first-drafts of guides
ElliotFriend Dec 12, 2023
9b1b867
fixing some category links
ElliotFriend Dec 14, 2023
d700f9d
include a period at the end of each tutorial description
ElliotFriend Dec 14, 2023
040e553
simplify tutorial search box placeholder text
ElliotFriend Dec 14, 2023
801e9e3
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 14, 2023
65438e2
better description for the tutorials page
ElliotFriend Dec 14, 2023
3bd6a8d
making the pre-commit script executable
ElliotFriend Dec 14, 2023
56a4de7
flesh out some of the state archival guides
ElliotFriend Dec 15, 2023
cd68c62
first effort for some rpc ledger key guides
ElliotFriend Dec 19, 2023
11a68f3
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 19, 2023
7032875
fix some broken links
ElliotFriend Dec 19, 2023
a006db5
add a guide on ingesting events into a db
ElliotFriend Dec 20, 2023
541963e
first effort at storage type guides
ElliotFriend Dec 20, 2023
1fa7987
Some more stubs, marking drafts, and a couple additions
ElliotFriend Dec 20, 2023
45e16c6
make not a draft to fix a broken link
ElliotFriend Dec 20, 2023
2a5f0c3
guides category descriptions in README.mdx files
ElliotFriend Dec 21, 2023
3f76fdc
marking incomplete chain migration docs as drafts
ElliotFriend Dec 21, 2023
5c24b7e
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 21, 2023
77faf0a
change some tutorial difficulty levels
ElliotFriend Dec 21, 2023
3b9f272
fine-tune the tutorials component styling a bit
ElliotFriend Dec 21, 2023
de1d974
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Dec 22, 2023
b972b2f
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Jan 8, 2024
6fd8024
improving some guides organization
ElliotFriend Jan 8, 2024
101552f
fix linting errors and broken links
ElliotFriend Jan 8, 2024
4e5cd32
Merge branch 'main' into pre-mainnet-restructure
ElliotFriend Jan 9, 2024
6d178e8
include wrap instructions for native lumens
ElliotFriend Jan 9, 2024
6fc811b
fix broken link in contract metadata guide
ElliotFriend Jan 9, 2024
f91f852
final changes to existing guides
ElliotFriend Jan 9, 2024
50914a4
moving developer tools into the main sidebar
ElliotFriend Jan 9, 2024
d8c786c
create real redirects instead of just notes
ElliotFriend Jan 9, 2024
6fc9be1
fix broken links in a dapps challenge page
ElliotFriend Jan 9, 2024
cb07d40
fix a redirect syntax error
ElliotFriend Jan 9, 2024
f5f4fbd
fix a tutorials redirect
ElliotFriend Jan 9, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 9 additions & 0 deletions api/README.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,9 @@
---
title: Introduction
---

import DocCardList from "@theme/DocCardList";

A public discussion about the design of soroban-rpc.

<DocCardList />
2 changes: 1 addition & 1 deletion api/goals.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -15,4 +15,4 @@ Soroban-RPC should provide all the basic data that a dapp developer would need,
Soroban-RPC should support the developer from local testing (via the quickstart image), all the way through to production deployments.

- This implies it should be easy to deploy, and easy to maintain; with low cost, and little "admin" needed.
- The developer should be able to simply run the quickstart docker image, and quickly be ready to serve requests without needing to set up or maintain dependent infrastructure.
- The developer should be able to simply run the quickstart docker image, and quickly be ready to serve requests without needing to set up or maintain dependent infrastructure.
14 changes: 7 additions & 7 deletions api/json-rpc.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,10 @@ When XDR is passed as a parameter or returned, it is always a string encoded usi

Soroban-RPC provides an [OpenRPC] specification document that can be used to mock, build, and/or validate both server and client software implementations. This document is used to generate all of our [methods] documentation pages. You can view the full [specification document here]. Additionally, you can experiment with this specificaiton document in the [OpenRPC Playground].

[JSON-RPC 2.0]: <https://www.jsonrpc.org/specification>
[jsonrpc error object]: <https://www.jsonrpc.org/specification#error_object>
[JavaScript SDK]: <https://github.com/stellar/js-stellar-sdk>
[OpenRPC]: <https://open-rpc.org/>
[methods]: <./methods>
[specification document here]: <https://raw.githubusercontent.com/stellar/soroban-docs/main/static/openrpc.json>
[OpenRPC Playground]: <https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/stellar/soroban-docs/main/static/openrpc.json>
[JSON-RPC 2.0]: https://www.jsonrpc.org/specification
[jsonrpc error object]: https://www.jsonrpc.org/specification#error_object
[JavaScript SDK]: https://github.com/stellar/js-stellar-sdk
[OpenRPC]: https://open-rpc.org/
[methods]: ./methods
[specification document here]: https://raw.githubusercontent.com/stellar/soroban-docs/main/static/openrpc.json
[OpenRPC Playground]: https://playground.open-rpc.org/?schemaUrl=https://raw.githubusercontent.com/stellar/soroban-docs/main/static/openrpc.json
2 changes: 1 addition & 1 deletion api/methods/getEvents.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Returns contract events

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="getEvents"/>
<RpcMethod method="getEvents" />
2 changes: 1 addition & 1 deletion api/methods/getHealth.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Returns node health

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="getHealth"/>
<RpcMethod method="getHealth" />
2 changes: 1 addition & 1 deletion api/methods/getLatestLedger.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Returns latest known ledger

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="getLatestLedger"/>
<RpcMethod method="getLatestLedger" />
56 changes: 26 additions & 30 deletions api/methods/getLedgerEntries.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ description: Returns ledger entries

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="getLedgerEntries"/>
<RpcMethod method="getLedgerEntries" />

### Generating `keys` Parameters

Expand Down Expand Up @@ -55,23 +55,23 @@ yarn add @stellar/stellar-sdk
```

```js
import { xdr, StrKey } from '@stellar/stellar-sdk';
import { xdr, StrKey } from "@stellar/stellar-sdk";

const getLedgerKeySymbol = (contractId, symbolText) => {
const ledgerKey = xdr.LedgerKey.contractData(
new xdr.LedgerKeyContractData({
contractId: StrKey.decodeContract(contractId),
key: xdr.ScVal.scvSymbol(symbolText)
})
key: xdr.ScVal.scvSymbol(symbolText),
}),
);
return ledgerKey.toXDR('base64');
return ledgerKey.toXDR("base64");
};

console.log(
getLedgerKeySymbol(
'CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE',
'COUNTER'
)
"CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE",
"COUNTER",
),
);
```

Expand Down Expand Up @@ -105,7 +105,6 @@ console.log(getLedgerKeyAccount(
# OUTPUT: AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQ==
```


We then take our output from this function, and use it as the element in the `keys` array parameter in our call to the `getLedgerEntries` method.

```json
Expand All @@ -126,7 +125,7 @@ And the response we get contains the `LedgerEntryData` with the current informat
"jsonrpc": "2.0",
"id": 8675309,
"result": {
"entries":[
"entries": [
{
"key": "AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQ==",
"xdr": "AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQAAABdIdugAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA",
Expand All @@ -142,9 +141,9 @@ We can then parse this result as an `xdr.LedgerEntryData` type.

```js
const parsed = xdr.LedgerEntryData.fromXDR(
'AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQAAABdIdugAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA',
'base64'
)
"AAAAAAAAAACp3BPIqFxM9XSnW6aHvavD3GWlJGfuylOt5tZL6CQtdQAAABdIdugAAAAADAAAAAAAAAAAAAAAAAAAAAAAAAAAAQAAAAAAAAAAAAAA",
"base64",
);
console.log(parsed);
```

Expand Down Expand Up @@ -192,18 +191,18 @@ print(
##### JavaScript

```javascript
import { Address, xdr } from '@stellar/stellar-sdk';
import { Address, xdr } from "@stellar/stellar-sdk";

function getLedgerKeyContractCode(contractId) {
const instance = new ContractId(contractId).getFootprint();
return instance.toXDR('base64');
return instance.toXDR("base64");
}

console.log(
getLedgerKeyContractCode(
"CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE"
)
)
"CA3D5KRYM6CB7OWQ6TWYRR3Z4T7GNZLKERYNZGGA5SOAOPIFY6YQGAXE",
),
);
// OUTPUT: AAAABq+aJSfjs7VXHWOwJGujK30xpTI3Zt98YN/As+O6b98jAAAAFA==
```

Expand All @@ -215,9 +214,7 @@ We then take our output from this function, and use it as the element in the `ke
"id": 8675309,
"method": "getLedgerEntries",
"params": {
"keys": [
"AAAABq+aJSfjs7VXHWOwJGujK30xpTI3Zt98YN/As+O6b98jAAAAFA=="
]
"keys": ["AAAABq+aJSfjs7VXHWOwJGujK30xpTI3Zt98YN/As+O6b98jAAAAFA=="]
}
}
```
Expand Down Expand Up @@ -280,31 +277,30 @@ const { xdr } = require("@stellar/stellar-sdk");
function getLedgerKeyWasmId(contractCodeLedgerEntryData) {
const entry = xdr.LedgerEntryData.fromXDR(
contractCodeLedgerEntryData,
"base64"
"base64",
);

const instance = entry.contractData().val().instance();

let ledgerKey = xdr.LedgerKey.contractCode(
new xdr.LedgerKeyContractCode({
hash: instance.wasmHash()
})
hash: instance.wasmHash(),
}),
);

return ledgerKey.toXDR('base64');
return ledgerKey.toXDR("base64");
}

console.log(
getLedgerKeyWasmId(
"AAAABq+aJSfjs7VXHWOwJGujK30xpTI3Zt98YN/As+O6b98jAAAAFAAAABIAAAAAZBYoEJT3IaPMMk3FoRmnEQHoDxewPZL+Uor+xWI4uII="
)
)
"AAAABq+aJSfjs7VXHWOwJGujK30xpTI3Zt98YN/As+O6b98jAAAAFAAAABIAAAAAZBYoEJT3IaPMMk3FoRmnEQHoDxewPZL+Uor+xWI4uII=",
),
);
// OUTPUT: AAAAB2QWKBCU9yGjzDJNxaEZpxEB6A8XsD2S/lKK/sViOLiC
```

Now, finally we have a `LedgerKey` that correspond to the Wasm byte-code that has been deployed under the `ContractId` we started out with so very long ago. This `LedgerKey` can be used in a final request to the Soroban-RPC endpoint.


```json
{
"jsonrpc": "2.0",
Expand Down Expand Up @@ -337,4 +333,4 @@ And the response we get contains (even more) `LedgerEntryData` that we can decod
```

[`increment` example contract]: /docs/getting-started/storing-data
["View XDR" page of the Stellar Laboratory]: <https://laboratory.stellar.org/#xdr-viewer?type=LedgerEntryData&network=testnet>
["View XDR" page of the Stellar Laboratory]: https://laboratory.stellar.org/#xdr-viewer?type=LedgerEntryData&network=testnet
2 changes: 1 addition & 1 deletion api/methods/getNetwork.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Returns network config

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="getNetwork"/>
<RpcMethod method="getNetwork" />
2 changes: 1 addition & 1 deletion api/methods/getTransaction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Returns transaction details

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="getTransaction"/>
<RpcMethod method="getTransaction" />
2 changes: 1 addition & 1 deletion api/methods/sendTransaction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Submits a transaction

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="sendTransaction"/>
<RpcMethod method="sendTransaction" />
2 changes: 1 addition & 1 deletion api/methods/simulateTransaction.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -5,4 +5,4 @@ description: Submits a trial contract invocation transaction

import { RpcMethod } from "@site/src/components/RpcMethod";

<RpcMethod method="simulateTransaction"/>
<RpcMethod method="simulateTransaction" />
10 changes: 3 additions & 7 deletions api/pagination.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ Pagination in soroban-rpc is similar to pagination in Horizon.

For methods which support it, the pagination arguments are passed as a final object argument with two values:

- `cursor`: string - (optional) A string ID that points to a specific location in a collection of responses and is pulled from the paging_token value of a record. When a cursor is provided Soroban-RPC will *not* include the element whose id matches the cursor in the response. Only elements which appear *after* the cursor are included.
- `limit`: number - (optional) The maximum number of records returned. The limit for [getEvents](methods/getEvents) can range from 1 to 10000 - an upper limit that is hardcoded in Soroban-RPC for performance reasons. If this argument isn't designated, it defaults to 100.
- `cursor`: string - (optional) A string ID that points to a specific location in a collection of responses and is pulled from the paging*token value of a record. When a cursor is provided Soroban-RPC will \_not* include the element whose id matches the cursor in the response. Only elements which appear _after_ the cursor are included.
- `limit`: number - (optional) The maximum number of records returned. The limit for [getEvents](methods/getEvents.mdx) can range from 1 to 10000 - an upper limit that is hardcoded in Soroban-RPC for performance reasons. If this argument isn't designated, it defaults to 100.

For example, calling a method with pagination parameter set:

Expand All @@ -18,10 +18,6 @@ For example, calling a method with pagination parameter set:
"jsonrpc": "2.0",
"Id": "1",
"method": "exampleMethod",
"params": [
"other",
"arguments",
{ "cursor": "1234-1", "limit": 100 }
]
"params": ["other", "arguments", { "cursor": "1234-1", "limit": 100 }]
}
```
5 changes: 2 additions & 3 deletions dapps/index.mdx → dapps/README.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -11,18 +11,17 @@ While the course specifically focuses on the Soroban platform, the knowledge you

Through The Soroban Dapps Challenge, you'll have hands-on experience using Soroban's initial versions of the smart contracts environment, a Rust SDK, a CLI, and an RPC server. You'll learn how to write, test, and deploy smart contracts, and you'll get to see your code in action on Futurenet.

# What This Course Entails
## What This Course Entails

We've designed this course as a learning adventure. It's a way for developers from the Stellar ecosystem and other blockchain communities to experiment, provide feedback, and contribute to the Soroban development process.

As you progress through The Soroban Dapps Challenge, anticipate your code to break and updates to shift things. We invite you to experiment and build but also remind you that changes are afoot as we prepare for the production release.


## Getting Started

To get started, simply head over to the [Dashboard](/dashboard), connect your wallet, and see what challenges await you!

# Giving Your Feedback
## Giving Your Feedback

We value your input. Feel free to file issues in the Soroban repos or raise them in the soroban channel in the Stellar Developer [Discord](https://discord.gg/3qrBhbwE).

Expand Down
12 changes: 6 additions & 6 deletions dapps/dapp-challenges/challenge-0-crowdfund.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -116,7 +116,7 @@ npm run dev

Now open your browser and visit [http://localhost:3000](http://localhost:3000). You should be able to see the frontend of your dapp.

> Note: Follow the instructions below and ensure that you have funded your wallet address that you intend to use from browser, otherwise the dapp display will be blank and a 'Account not found' will be printed on browser's console only. If you are using Freighter, be sure that you have properly configured the Freighter Wallet by following the instructions [here](../guides/wallets#connect-a-wallet-freighter).
> Note: Follow the instructions below and ensure that you have funded your wallet address that you intend to use from browser, otherwise the dapp display will be blank and a 'Account not found' will be printed on browser's console only. If you are using Freighter, be sure that you have properly configured the Freighter Wallet by following the instructions [here](../guides/wallets.mdx#connect-a-wallet-freighter).

Now that you have the frontend running, it's time to connect it with the backend, your smart contract, that defines the rules and logic of the crowdfund campaign, including the function for accepting contributions. If you want to dig into the specifics of the contract, take a look at the video walkthrough of the contract code [here](https://youtu.be/vTz0CQYnMRQ?t=260&feature=shared).

Expand Down Expand Up @@ -225,7 +225,7 @@ You should see an updated balance reflecting the amount you have pledged in the

## Checkpoint 4: 🚢 Ship it! 🚁

Now that your dapp is fully functional, its time to deploy it to a production environment. In this step, you will learn how to deploy your dapp to Vercel, a cloud platform for static sites that offers a quick and effective way to deploy the frontend of your dapp. This section requires that you have a [Vercel account] and the Vercel cli installed.
Now that your dapp is fully functional, its time to deploy it to a production environment. In this step, you will learn how to deploy your dapp to Vercel, a cloud platform for static sites that offers a quick and effective way to deploy the frontend of your dapp. This section requires that you have a [Vercel account] and the Vercel cli installed.

If you don't have the Vercel cli installed, run the following command to install it globally:

Expand All @@ -241,7 +241,7 @@ Next, you will need to remove the `target` directory to save space for the the d
rm -rf target
```

>Note: You can build this directory again by running `soroban contract build` in the `contracts/abundance` directory.
> Note: You can build this directory again by running `soroban contract build` in the `contracts/abundance` directory.

Then, remove any existing `.vercel` directory in your project to ensure that you are starting with a clean slate:

Expand All @@ -255,7 +255,7 @@ Then, run the following command to deploy your example dapp:
vercel --prod
```

Vercel will prompt you to link your local project to a new Vercel project.
Vercel will prompt you to link your local project to a new Vercel project.
Follow the answers to the prompts below to ensure that your local project is correctly linked to a new Vercel project:

```bash
Expand Down Expand Up @@ -286,7 +286,6 @@ You can now visit the preview link to see your deployed dapp! 🎉

Remember, you must add Futurenet network lumens to your Freighter wallet to interact with the deployed example dapp. Visit https://laboratory.stellar.org/#account-creator?network=futurenet, and follow the instructions to create your Freighter account on Futurenet.


## Checkpoint 5: 💪 Pass the Challenge!

Now it's time to submit your work!
Expand All @@ -313,6 +312,7 @@ In order to successfully complete this challenge, your work needs to be checked.
```sh
Public Key: GBSXUXZSA2VEXN5VGOWE5ODAJLC575JCMWRJ4FFRDWSTRCJ123456789
```

3. Create a Pull Request to the `stellar/soroban-dapps-challenge/crowdfund` branch. When the PR is created, CI actions will check the `crowdfund/challenge/output.txt` file data and update your progress.
4. Wait for the CI/CD pipeline results.
5. Fix errors if present:
Expand Down Expand Up @@ -371,4 +371,4 @@ Then via the web UI, you should be able to:

## 🛡️🗡️ Take On More Challenges

View your progress and take on more challenges by visiting your [User Dashboard!](/dashboard)
View your progress and take on more challenges by visiting your [User Dashboard!](/dashboard)
Loading