Skip to content

Fix Moonbeam 404s #1172

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 12 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
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
2 changes: 1 addition & 1 deletion builders/ethereum/libraries/ethersjs.md
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ To run the script, you can run the following command in your terminal:
node transaction.js
```

If the transaction was succesful, in your terminal you'll see the transaction hash has been printed out.
If the transaction was successful, in your terminal you'll see the transaction hash has been printed out.

You can also use the `balances.js` script to check that the balances for the origin and receiving accounts have changed. The entire workflow would look like this:

Expand Down
4 changes: 2 additions & 2 deletions builders/ethereum/libraries/ethersrs.md
Original file line number Diff line number Diff line change
Expand Up @@ -67,7 +67,7 @@ There are multiple ways to create a provider and signer, but the easiest way is

1. Import `Provider` and `Http` from the `ethers` crate
2. Add a `Client` type for convenience, which will be used once you start to create the functions for sending a transaction and deploying a contract
3. Add a `tokio` attribute above `async fn main()` for asynchronous excution
3. Add a `tokio` attribute above `async fn main()` for asynchronous execution
4. Use `try_from` to attempt to instantiate a JSON-RPC provider object from an RPC endpoint
5. Use a private key to create a wallet object (the private key will be used to sign transactions). **Note: This is for example purposes only. Never store your private keys in a plain Rust file**
6. Wrap the provider and wallet together into a client by providing them to a `SignerMiddleware` object
Expand Down Expand Up @@ -311,7 +311,7 @@ To run the script, which will send the transaction and then check the balances o
cargo run
```

If the transaction was succesful, in your terminal you'll see the transaction details printed out along with the balance of your address.
If the transaction was successful, in your terminal you'll see the transaction details printed out along with the balance of your address.

--8<-- 'code/builders/ethereum/libraries/ethers-rust/terminal/transaction.md'

Expand Down
2 changes: 1 addition & 1 deletion builders/ethereum/libraries/web3py.md
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ To run the script, you can run the following command in your terminal:
python3 transaction.py
```

If the transaction was succesful, in your terminal you'll see the transaction hash has been printed out.
If the transaction was successful, in your terminal you'll see the transaction hash has been printed out.

You can also use the `balances.py` script to check that the balances for the origin and receiving accounts have changed. The entire workflow would look like this:

Expand Down
6 changes: 3 additions & 3 deletions learn/platform/technology.md
Original file line number Diff line number Diff line change
Expand Up @@ -88,16 +88,16 @@ A high-level interaction flow is shown above. A Web3 RPC call from a DApp or exi

### Ethereum Pallet {: #ethereum-pallet}

The [Ethereum pallet](https://polkadot-evm.github.io/frontier/frame/ethereum.html){target=\_blank} is responsible for handling blocks and transaction receipts and statuses. It enables sending and receiving Ethereum-formatted data to and from Moonbeam by storing an Ethereum-style block and its associated transaction hashes in the Substrate runtime.
The [Ethereum pallet](https://polkadot-evm.github.io/frontier/overview){target=\_blank} is responsible for handling blocks and transaction receipts and statuses. It enables sending and receiving Ethereum-formatted data to and from Moonbeam by storing an Ethereum-style block and its associated transaction hashes in the Substrate runtime.

When a user submits a raw Ethereum transaction, it converts into a Substrate transaction through the Ethereum pallet's `transact` extrinsic—using the Ethereum pallet as the sole executor of the EVM pallet forces all of the data to be stored and transacted in an Ethereum-compatible way, which is how explorers like [Moonscan](/builders/get-started/explorers/#moonscan){target=\_blank} (built by Etherscan) can index block data.

### EVM Pallet {: #evm-pallet }

The [EVM pallet](https://polkadot-evm.github.io/frontier/frame/ethereum.html){target=\_blank} implements a sandboxed virtual stack machine and uses the [SputnikVM](https://github.com/rust-ethereum/evm){target=\_blank} as the underlying EVM engine. It executes Ethereum smart contract bytecode in a manner similar to Ethereum mainnet, including gas metering and state changes.
The [EVM pallet](https://polkadot-evm.github.io/frontier/overview){target=\_blank} implements a sandboxed virtual stack machine and uses the [SputnikVM](https://github.com/rust-ethereum/evm){target=\_blank} as the underlying EVM engine. It executes Ethereum smart contract bytecode in a manner similar to Ethereum mainnet, including gas metering and state changes.

Moonbeam uses unified accounts, meaning an H160 (Ethereum-style) address is also a valid Substrate address, so you only need a single account to interact with the Substrate runtime and the EVM. Once a balance exists in the EVM, smart contracts can be created and interacted with through standard Ethereum RPC calls.
The EVM pallet should produce nearly identical execution results to Ethereum, such as gas cost and balance changes. However, there are some differences. Please refer to the [EVM module vs Ethereum network](https://polkadot-evm.github.io/frontier/frame/evm.html#evm-module-vs-ethereum-network){target=\_blank} section of the Frontier EVM Pallet documentation for more information. Although the EVM pallet aims for near-identical behavior to Ethereum, some differences exist, for example, Moonbeam's [dynamic fee mechanism](https://forum.moonbeam.network/t/proposal-dynamic-fee-mechanism-for-moonbeam-and-moonriver/241){target=\_blank}. For more information, refer to the [Frontier EVM Pallet documentation](https://polkadot-evm.github.io/frontier/frame/evm.html#evm-module-vs-ethereum-network){target=\_blank}.
The EVM pallet should produce nearly identical execution results to Ethereum, such as gas cost and balance changes. However, there are some differences. Although the EVM pallet aims for near-identical behavior to Ethereum, some differences exist, for example, Moonbeam's [dynamic fee mechanism](https://forum.moonbeam.network/t/proposal-dynamic-fee-mechanism-for-moonbeam-and-moonriver/241){target=\_blank}. For more information, refer to the [Frontier EVM Pallet documentation](https://polkadot-evm.github.io/frontier/){target=\_blank}.

Moonbeam includes additional EVM precompiles for functionalities like cryptographic operations (ECRecover, SHA256, BLAKE2, BN128) and dispatching Substrate calls directly from within the EVM. Moonbeam uses the following EVM precompiles:

Expand Down
20 changes: 10 additions & 10 deletions llms-full.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7611,7 +7611,7 @@ To run the script, you can run the following command in your terminal:
node transaction.js
```

If the transaction was succesful, in your terminal you'll see the transaction hash has been printed out.
If the transaction was successful, in your terminal you'll see the transaction hash has been printed out.

You can also use the `balances.js` script to check that the balances for the origin and receiving accounts have changed. The entire workflow would look like this:

Expand Down Expand Up @@ -8252,7 +8252,7 @@ There are multiple ways to create a provider and signer, but the easiest way is

1. Import `Provider` and `Http` from the `ethers` crate
2. Add a `Client` type for convenience, which will be used once you start to create the functions for sending a transaction and deploying a contract
3. Add a `tokio` attribute above `async fn main()` for asynchronous excution
3. Add a `tokio` attribute above `async fn main()` for asynchronous execution
4. Use `try_from` to attempt to instantiate a JSON-RPC provider object from an RPC endpoint
5. Use a private key to create a wallet object (the private key will be used to sign transactions). **Note: This is for example purposes only. Never store your private keys in a plain Rust file**
6. Wrap the provider and wallet together into a client by providing them to a `SignerMiddleware` object
Expand Down Expand Up @@ -8545,7 +8545,7 @@ To run the script, which will send the transaction and then check the balances o
cargo run
```

If the transaction was succesful, in your terminal you'll see the transaction details printed out along with the balance of your address.
If the transaction was successful, in your terminal you'll see the transaction details printed out along with the balance of your address.

<div id="termynal" data-termynal>
<span data-ty="input"><span class="file-path"></span>cargo run</span>
Expand Down Expand Up @@ -11168,7 +11168,7 @@ To run the script, you can run the following command in your terminal:
python3 transaction.py
```

If the transaction was succesful, in your terminal you'll see the transaction hash has been printed out.
If the transaction was successful, in your terminal you'll see the transaction hash has been printed out.

You can also use the `balances.py` script to check that the balances for the origin and receiving accounts have changed. The entire workflow would look like this:

Expand Down Expand Up @@ -59758,16 +59758,16 @@ A high-level interaction flow is shown above. A Web3 RPC call from a DApp or exi

### Ethereum Pallet {: #ethereum-pallet}

The [Ethereum pallet](https://polkadot-evm.github.io/frontier/frame/ethereum.html){target=\_blank} is responsible for handling blocks and transaction receipts and statuses. It enables sending and receiving Ethereum-formatted data to and from Moonbeam by storing an Ethereum-style block and its associated transaction hashes in the Substrate runtime.
The [Ethereum pallet](https://polkadot-evm.github.io/frontier/overview){target=\_blank} is responsible for handling blocks and transaction receipts and statuses. It enables sending and receiving Ethereum-formatted data to and from Moonbeam by storing an Ethereum-style block and its associated transaction hashes in the Substrate runtime.

When a user submits a raw Ethereum transaction, it converts into a Substrate transaction through the Ethereum pallet's `transact` extrinsic—using the Ethereum pallet as the sole executor of the EVM pallet forces all of the data to be stored and transacted in an Ethereum-compatible way, which is how explorers like [Moonscan](/builders/get-started/explorers/#moonscan){target=\_blank} (built by Etherscan) can index block data.

### EVM Pallet {: #evm-pallet }

The [EVM pallet](https://polkadot-evm.github.io/frontier/frame/ethereum.html){target=\_blank} implements a sandboxed virtual stack machine and uses the [SputnikVM](https://github.com/rust-ethereum/evm){target=\_blank} as the underlying EVM engine. It executes Ethereum smart contract bytecode in a manner similar to Ethereum mainnet, including gas metering and state changes.
The [EVM pallet](https://polkadot-evm.github.io/frontier/overview){target=\_blank} implements a sandboxed virtual stack machine and uses the [SputnikVM](https://github.com/rust-ethereum/evm){target=\_blank} as the underlying EVM engine. It executes Ethereum smart contract bytecode in a manner similar to Ethereum mainnet, including gas metering and state changes.

Moonbeam uses unified accounts, meaning an H160 (Ethereum-style) address is also a valid Substrate address, so you only need a single account to interact with the Substrate runtime and the EVM. Once a balance exists in the EVM, smart contracts can be created and interacted with through standard Ethereum RPC calls.
The EVM pallet should produce nearly identical execution results to Ethereum, such as gas cost and balance changes. However, there are some differences. Please refer to the [EVM module vs Ethereum network](https://polkadot-evm.github.io/frontier/frame/evm.html#evm-module-vs-ethereum-network){target=\_blank} section of the Frontier EVM Pallet documentation for more information. Although the EVM pallet aims for near-identical behavior to Ethereum, some differences exist, for example, Moonbeam's [dynamic fee mechanism](https://forum.moonbeam.network/t/proposal-dynamic-fee-mechanism-for-moonbeam-and-moonriver/241){target=\_blank}. For more information, refer to the [Frontier EVM Pallet documentation](https://polkadot-evm.github.io/frontier/frame/evm.html#evm-module-vs-ethereum-network){target=\_blank}.
The EVM pallet should produce nearly identical execution results to Ethereum, such as gas cost and balance changes. However, there are some differences. Although the EVM pallet aims for near-identical behavior to Ethereum, some differences exist, for example, Moonbeam's [dynamic fee mechanism](https://forum.moonbeam.network/t/proposal-dynamic-fee-mechanism-for-moonbeam-and-moonriver/241){target=\_blank}. For more information, refer to the [Frontier EVM Pallet documentation](https://polkadot-evm.github.io/frontier/){target=\_blank}.

Moonbeam includes additional EVM precompiles for functionalities like cryptographic operations (ECRecover, SHA256, BLAKE2, BN128) and dispatching Substrate calls directly from within the EVM. Moonbeam uses the following EVM precompiles:

Expand Down Expand Up @@ -63667,7 +63667,7 @@ With the oracle node running, you can start to configure the smart contract side

Next, you'll need to deploy the oracle contract, which is the middleware between the chain and the node. The contract emits an event with all the necessary information, which is read by the oracle node. Then, the node fulfills the request and writes the requested data in the caller's contract.

The source code of the oracle contract can be found in [Chainlink's official GitHub repository](https://github.com/smartcontractkit/chainlink/blob/v1.13.3/contracts/src/v0.6/Oracle.sol){target=\_blank}. For this example, you can use Remix to interact with Moonbase Alpha and deploy the contract. In [Remix](https://remix.ethereum.org){target=\_blank}, you can create a new file and copy the following code:
The source code of the oracle contract can be found in [Chainlink's official GitHub repository](https://github.com/smartcontractkit/chainlink-evm/tree/develop/contracts){target=\_blank}. For this example, you can use Remix to interact with Moonbase Alpha and deploy the contract. In [Remix](https://remix.ethereum.org){target=\_blank}, you can create a new file and copy the following code:

```bash
pragma solidity ^0.6.6;
Expand Down Expand Up @@ -66440,7 +66440,7 @@ To get started creating a Safe, navigate to the [Moonbeam Safe](https://multisig

### Connect MetaMask {: #connect-metamask }

Once on the [Moonbase Alpha](https://multisig.moonbeam.network/?chain=mbase){target=\_blank} page, you can begin to create a Safe by first connecting your wallet:
Once on the [Moonbase Alpha](https://multisig.moonbeam.network/){target=\_blank} page, you can begin to create a Safe by first connecting your wallet:

1. Click **Connect Wallet**
2. Select a wallet to connect to Moonbeam Safe. For this example you can use MetaMask. If MetaMask doesn't appear in the list of options, click **Show More** and select **MetaMask**
Expand Down Expand Up @@ -79616,7 +79616,7 @@ This function allows any user to start the collection process for a specific `pr
Recall that each spoke chain will have a `DAOSatellite` smart contract associated with it that can also receive and send cross-chain messages. This function sends a cross-chain message to every registered spoke chain's `DAOSatellite` during the collection phase. The message contains a function selector, `1`, and a proposal ID. The function selector is used to request voting data for the given proposal instead of some other action (we will revisit [this concept very soon](#receiving-votes-from-spoke-chains)) from the destination `DAOSatellite` contract.

!!! note
By using LayerZero, multiple messages must be sent in a single transaction so that every spoke chain can receive data. LayerZero, along with other cross-chain protocols, is **unicast** instead of **multicast**. As in, a cross-chain message can only arrive to a single destination. When designing a hub-and-spoke architecture, research if your [protocol supports multicast messaging](https://wormhole.com/docs/protocol/infrastructure/core-contracts/#multicast){target=\_blank}, as it may be more succinct.
By using LayerZero, multiple messages must be sent in a single transaction so that every spoke chain can receive data. LayerZero, along with other cross-chain protocols, [is **unicast** instead of **multicast**](https://docs.layerzero.network/v1/concepts/messaging-properties){target=\_blank}. As in, a cross-chain message can only arrive to a single destination. When designing a hub-and-spoke architecture, research if your [protocol supports multicast messaging](https://wormhole.com/docs/protocol/infrastructure/core-contracts/#multicast){target=\_blank}, as it may be more succinct.

This should be it for requesting data, since most of the logic afterwards will be hosted within the [DAO Satellite](#dao-satellite-contract). Just understand that when sending the proposal to the

Expand Down
2 changes: 1 addition & 1 deletion node-operators/oracle-nodes/node-chainlink.md
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ With the oracle node running, you can start to configure the smart contract side

Next, you'll need to deploy the oracle contract, which is the middleware between the chain and the node. The contract emits an event with all the necessary information, which is read by the oracle node. Then, the node fulfills the request and writes the requested data in the caller's contract.

The source code of the oracle contract can be found in [Chainlink's official GitHub repository](https://github.com/smartcontractkit/chainlink/blob/v1.13.3/contracts/src/v0.6/Oracle.sol){target=\_blank}. For this example, you can use Remix to interact with Moonbase Alpha and deploy the contract. In [Remix](https://remix.ethereum.org){target=\_blank}, you can create a new file and copy the following code:
The source code of the oracle contract can be found in [Chainlink's official GitHub repository](https://github.com/smartcontractkit/chainlink-evm/tree/develop/contracts){target=\_blank}. For this example, you can use Remix to interact with Moonbase Alpha and deploy the contract. In [Remix](https://remix.ethereum.org){target=\_blank}, you can create a new file and copy the following code:

```bash
pragma solidity ^0.6.6;
Expand Down
2 changes: 1 addition & 1 deletion tokens/manage/multisig-safe.md
Original file line number Diff line number Diff line change
Expand Up @@ -72,7 +72,7 @@ To get started creating a Safe, navigate to the [Moonbeam Safe](https://multisig

### Connect MetaMask {: #connect-metamask }

Once on the [Moonbase Alpha](https://multisig.moonbeam.network/?chain=mbase){target=\_blank} page, you can begin to create a Safe by first connecting your wallet:
Once on the [Moonbase Alpha](https://multisig.moonbeam.network/){target=\_blank} page, you can begin to create a Safe by first connecting your wallet:

1. Click **Connect Wallet**
2. Select a wallet to connect to Moonbeam Safe. For this example you can use MetaMask. If MetaMask doesn't appear in the list of options, click **Show More** and select **MetaMask**
Expand Down
2 changes: 1 addition & 1 deletion tutorials/interoperability/cross-chain-dao.md
Original file line number Diff line number Diff line change
Expand Up @@ -479,7 +479,7 @@ This function allows any user to start the collection process for a specific `pr
Recall that each spoke chain will have a `DAOSatellite` smart contract associated with it that can also receive and send cross-chain messages. This function sends a cross-chain message to every registered spoke chain's `DAOSatellite` during the collection phase. The message contains a function selector, `1`, and a proposal ID. The function selector is used to request voting data for the given proposal instead of some other action (we will revisit [this concept very soon](#receiving-votes-from-spoke-chains)) from the destination `DAOSatellite` contract.

!!! note
By using LayerZero, multiple messages must be sent in a single transaction so that every spoke chain can receive data. LayerZero, along with other cross-chain protocols, is **unicast** instead of **multicast**. As in, a cross-chain message can only arrive to a single destination. When designing a hub-and-spoke architecture, research if your [protocol supports multicast messaging](https://wormhole.com/docs/protocol/infrastructure/core-contracts/#multicast){target=\_blank}, as it may be more succinct.
By using LayerZero, multiple messages must be sent in a single transaction so that every spoke chain can receive data. LayerZero, along with other cross-chain protocols, [is **unicast** instead of **multicast**](https://docs.layerzero.network/v1/concepts/messaging-properties){target=\_blank}. As in, a cross-chain message can only arrive to a single destination. When designing a hub-and-spoke architecture, research if your [protocol supports multicast messaging](https://wormhole.com/docs/protocol/infrastructure/core-contracts/#multicast){target=\_blank}, as it may be more succinct.

This should be it for requesting data, since most of the logic afterwards will be hosted within the [DAO Satellite](#dao-satellite-contract). Just understand that when sending the proposal to the

Expand Down