diff --git a/apps/portal/redirects.mjs b/apps/portal/redirects.mjs index 66dc334c85f..97e4a221ac8 100644 --- a/apps/portal/redirects.mjs +++ b/apps/portal/redirects.mjs @@ -867,6 +867,50 @@ const infrastructureRedirects = { "/rpc-edge/faqs": "/infrastructure/rpc-edge/overview", }; +const glossaryRedirects = { + "/glossary": "https://thirdweb.com/learn/glossary", + "/claim-phases": "https://thirdweb.com/learn/glossary/claim-phases", + "/glossary/claiming": "https://thirdweb.com/learn/glossary/claim-phases", + "/glossary/composability": + "https://thirdweb.com/learn/glossary/composability", + "/glossary/delayed-reveal": + "https://thirdweb.com/learn/glossary/delayed-reveal", + "/glossary/drop": "https://thirdweb.com/learn/glossary/drop", + "/glossary/externally-owned-account": + "https://thirdweb.com/learn/glossary/externally-owned-account", + "/glossary/factory-contract": + "https://thirdweb.com/learn/glossary/factory-contract", + "/glossary/gas": "https://thirdweb.com/learn/glossary/gas-fee", + "/glossary/gasless-transactions": + "https://thirdweb.com/learn/glossary/gasless-transactions", + "/glossary/interoperability": + "https://thirdweb.com/learn/glossary/interoperability", + "/glossary/ipfs": + "https://thirdweb.com/learn/glossary/interplanetary-file-system-ipfs", + "/glossary/lazy-minting": "https://thirdweb.com/learn/glossary/lazy-minting", + "/glossary/local-wallet": "https://thirdweb.com/learn/glossary/local-wallet", + "/glossary/minting": "https://thirdweb.com/learn/glossary/minting", + "/glossary/nft": "https://thirdweb.com/learn/glossary/nft", + "/glossary/non-custodial-wallet": + "https://thirdweb.com/learn/glossary/non-custodial-wallet", + "/glossary/permissionless": + "https://thirdweb.com/learn/glossary/permissionless", + "/glossary/proxy-contracts": + "https://thirdweb.com/learn/glossary/proxy-contracts", + "/glossary/rpc": "https://thirdweb.com/learn/glossary/rpc-url", + "/glossary/signature-based-minting": + "https://thirdweb.com/learn/glossary/signature-based-minting", + "/glossary/smart-contract": + "https://thirdweb.com/learn/glossary/smart-contract", + "/glossary/smart-account": + "https://thirdweb.com/learn/glossary/smart-account", + "/glossary/soulbound": "https://thirdweb.com/learn/glossary/soulbound-tokens", + "/glossary/staking": "https://thirdweb.com/learn/glossary/staking", + "/glossary/token": "https://thirdweb.com/learn/glossary/token", + "/glossary/wallet": "https://thirdweb.com/learn/glossary/", + "/glossary/bundler": "https://thirdweb.com/learn/glossary/bundler", +}; + const otherRedirects = { // wallets > connect redirects "/wallets": "/connect", @@ -1020,6 +1064,7 @@ export const redirects = async () => { ...createRedirects(v5RestructuredRedirects), ...createRedirects(unrealEngineRedirects), ...createRedirects(v4ToV5Redirects), + ...createRedirects(glossaryRedirects), ]; }; diff --git a/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-overview.png b/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-overview.png new file mode 100644 index 00000000000..638af3b3b46 Binary files /dev/null and b/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-overview.png differ diff --git a/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-settings.png b/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-settings.png new file mode 100644 index 00000000000..d89ed6d9393 Binary files /dev/null and b/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-settings.png differ diff --git a/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-transfer.png b/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-transfer.png new file mode 100644 index 00000000000..08ef8405bbc Binary files /dev/null and b/apps/portal/src/app/account/api-keys/transfer-projects/assets/proj-transfer.png differ diff --git a/apps/portal/src/app/account/api-keys/transfer-projects/page.mdx b/apps/portal/src/app/account/api-keys/transfer-projects/page.mdx new file mode 100644 index 00000000000..d12bd407e67 --- /dev/null +++ b/apps/portal/src/app/account/api-keys/transfer-projects/page.mdx @@ -0,0 +1,36 @@ +import { Callout, Step, Steps, DocImage } from "@doc"; +import ProjOverview from "./assets/proj-overview.png"; +import ProjSettings from "./assets/proj-settings.png"; +import ProjTransfer from "./assets/proj-transfer.png"; + + +# Transfer projects to another team + +Learn how to transfer a thirdweb project from one team to another. + + + To transfer projects, you must be an owner of both the source and destination teams. + + + + + +Select the project you want to transfer from the list of projects in your team. + + + + + + +Navigate to the project settings by clicking on the gear icon in the bottom left of the project dashboard. + + + + + +Navigate to the Transfer Project modal and select the destination team from the dropdown. Click on the Transfer Project button to initiate the transfer. + + + + + diff --git a/apps/portal/src/app/account/sidebar.tsx b/apps/portal/src/app/account/sidebar.tsx index f472ea6a2d9..ac682a5c96e 100644 --- a/apps/portal/src/app/account/sidebar.tsx +++ b/apps/portal/src/app/account/sidebar.tsx @@ -38,7 +38,7 @@ export const sidebar: SideBar = { ], }, { - name: "API Keys", + name: "Projects", links: [ { name: "Overview", @@ -64,6 +64,10 @@ export const sidebar: SideBar = { name: "Access Restrictions", href: `${accountSlug}/api-keys/access`, }, + { + name: "Transfer Projects", + href: `${accountSlug}/api-keys/transfer-projects`, + }, ], }, { diff --git a/apps/portal/src/app/connect/pay/fees/assets/fee-dash.png b/apps/portal/src/app/connect/pay/fees/assets/fee-dash.png new file mode 100644 index 00000000000..0c3e1304a42 Binary files /dev/null and b/apps/portal/src/app/connect/pay/fees/assets/fee-dash.png differ diff --git a/apps/portal/src/app/connect/pay/fees/page.mdx b/apps/portal/src/app/connect/pay/fees/page.mdx new file mode 100644 index 00000000000..e0124957f29 --- /dev/null +++ b/apps/portal/src/app/connect/pay/fees/page.mdx @@ -0,0 +1,56 @@ +import {DocImage} from "@doc"; +import FeeShare from './assets/fee-dash.png'; + + +# Understanding fees + +Understand how protocol, developer, and onramp fees work with Universal Bridge. + +### Developer Fee + +To monetize applications or games, you are able to set a developer fee on each crypto-to-crypto or swap transaction. You may set this percentage +through Project > Universal Bridge > Settings. + + + +### Protocol Fee + +Our protocol fee is a flat 30 basis points (0.30%) applied on the source token amount. +This fee is independent of network gas fees and does not fluctuate. + +#### Setting fees using buy or sell + +You can configure who pays the protocol fee for buy or sell transactions by specifying the input amount `sell` or `buy`. + +See full reference for [`buy`](https://portal.thirdweb.com/references/typescript/v5/buy/prepare) and [`sell`](https://portal.thirdweb.com/references/typescript/v5/sell/prepare). + + +#### Setting fees on transfers or purchase mode + +You can configure who pays the protocol fee for transfers or purchase mode using the `feePayer` setting. This affects the +total amount paid by the user and the amount received by the destination (e.g., a seller, app, or partner). + +feePayer=buyer (Default) i.e. the user covers the protocol fee. + +Example: If the source token is 10 USDC, the user pays 10.30 USDC. + +- thirdweb receives: 0.30 USDC + +- Receiver receives: 10.00 USDC + +feePayer=receiver i.e. the receiver covers the protocol fee. + +Example: The user pays 10.00 USDC. + +- thirdweb receives: 0.30 USDC + +- Receiver receives: 9.70 USDC + +[See full reference.](https://bridge.thirdweb.com/reference#tag/transfer/POST/v1/transfer/prepare) + +### Onramp Fee + +When onramping to crypto using the Universal Bridge, a fee is charged by the third-party provider. This fee is determined by the provider and is typically a percentage +of the amount being onramped. This fee may vary based on the provider and payment method used. + +There are no protocol fees on onramp transactions. \ No newline at end of file diff --git a/apps/portal/src/app/connect/sidebar.tsx b/apps/portal/src/app/connect/sidebar.tsx index 1f731a8b59d..33e86eb472d 100644 --- a/apps/portal/src/app/connect/sidebar.tsx +++ b/apps/portal/src/app/connect/sidebar.tsx @@ -232,6 +232,10 @@ export const sidebar: SideBar = { name: "Supported Routes", href: "https://thirdweb.com/routes", }, + { + name: "Service Fees", + href: `${paySlug}/fees`, + }, { name: "Get Started", href: `${paySlug}/get-started`, diff --git a/apps/portal/src/app/contracts/sidebar.tsx b/apps/portal/src/app/contracts/sidebar.tsx index 7d3d1b52fad..17aef7a88ec 100644 --- a/apps/portal/src/app/contracts/sidebar.tsx +++ b/apps/portal/src/app/contracts/sidebar.tsx @@ -644,10 +644,6 @@ export const sidebar: SideBar = { name: "ERC20ClaimConditions", href: `${extensionsSlug}/erc-20/ERC20ClaimConditions`, }, - { - name: "ERC20ClaimPhases", - href: `${extensionsSlug}/erc-20/ERC20ClaimPhases`, - }, { name: "ERC20Mintable", href: `${extensionsSlug}/erc-20/ERC20Mintable`, @@ -791,10 +787,6 @@ export const sidebar: SideBar = { { name: "ERC-4337", links: [ - { - name: "AccountModule", - href: `${extensionsSlug}/erc-4337/AccountModule`, - }, { name: "SmartWallet", href: `${extensionsSlug}/erc-4337/SmartWallet`, diff --git a/apps/portal/src/app/engine/page.mdx b/apps/portal/src/app/engine/page.mdx index 46beaae30aa..6bf9f717ea0 100644 --- a/apps/portal/src/app/engine/page.mdx +++ b/apps/portal/src/app/engine/page.mdx @@ -26,6 +26,13 @@ Engine enables your app to: 🚀 [Get Engine hosted by thirdweb](https://thirdweb.com/team/~/~/engine/create) or [self-host for free](/engine/self-host). +### Tiers + +Engine is available in two tiers: Cloud and Dedicated. +- **Cloud**: thirdweb-hosted Engine with autoscaling and high availability. +- **Dedicated**: Self-hosted Engine with full control over your infrastructure. + + "href" in link && link.href === pathname, - ); - - if (currentLink && "name" in currentLink) { - return ( - - ); - } - - return null; -} diff --git a/apps/portal/src/app/glossary/bundler/page.mdx b/apps/portal/src/app/glossary/bundler/page.mdx deleted file mode 100644 index 54529399e25..00000000000 --- a/apps/portal/src/app/glossary/bundler/page.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Bundler - -A bundler is a node that monitors the alternative mempool of `UserOperations` and bundles multiple `UserOps` together to forward to the EntryPoint contract as a single transaction. -These `UserOps` can be sent from different accounts and are bundled and sent to the `EntryPoint` contract via a `handleOps` call. - -The bundler is controlled by its own EOA which initially pays for the gas fees upfront and is then repaid by either the sender or a paymaster if the transaction is sponsored. - -The entry point contract then uses the `validateOp` and `executeOp` functions on the smart account contract to verify and execute the `UserOps` on behalf of the users. - -It allows you to send transactions with smart accounts. diff --git a/apps/portal/src/app/glossary/claim-phases/page.mdx b/apps/portal/src/app/glossary/claim-phases/page.mdx deleted file mode 100644 index 27365e43fda..00000000000 --- a/apps/portal/src/app/glossary/claim-phases/page.mdx +++ /dev/null @@ -1,8 +0,0 @@ -# Claim Phases - -Claim phases or "claim conditions" allow you to configure various aspects of a [drop](/glossary/drop); such as who can claim tokens, -how many tokens will be released, the price of each token, release date, etc. - -They are available to use for any smart contract that implements the [Drop Single Phase](/contracts/build/extensions/general/DropSinglePhase) -or [Drop](/contracts/build/extensions/general/Drop) extension smart contracts, which includes our ready-to-deploy smart contracts like the -[NFT Drop](https://thirdweb.com/thirdweb.eth/DropERC721), [Token Drop](https://thirdweb.com/thirdweb.eth/DropERC20), and [Edition Drop](https://thirdweb.com/thirdweb.eth/DropERC1155) smart contracts. diff --git a/apps/portal/src/app/glossary/claiming/page.mdx b/apps/portal/src/app/glossary/claiming/page.mdx deleted file mode 100644 index c8c2bc0b561..00000000000 --- a/apps/portal/src/app/glossary/claiming/page.mdx +++ /dev/null @@ -1,4 +0,0 @@ -# Claiming - -Claiming is the process of transferring token ownership to the claimer's wallet. -Once a token has been [lazy minted](/glossary/lazy-minting), it can be claimed by a wallet. diff --git a/apps/portal/src/app/glossary/composability/page.mdx b/apps/portal/src/app/glossary/composability/page.mdx deleted file mode 100644 index 41a41d2ff2f..00000000000 --- a/apps/portal/src/app/glossary/composability/page.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Composability - -Composability refers to the ability for different protocols and smart contracts to interact and build upon each other. -It allows for the creation of new products and services without having to build everything from scratch. - -Thirdweb is completely composable. Each product can be used independently or in combination with other products. -For example, you can use the [SDKs](/connect) or [Dashboard](https://thirdweb.com/team) with **any** contract. Similarly, you can use the [Solidity SDK](/contracts/build/overview) -without using the [Dashboard](https://thirdweb.com/team) or [TypeScript/JavaScript SDK](/typescript/v5). - -So, if you already have your own workflow which works for you, you can pick and choose which products you want to use. diff --git a/apps/portal/src/app/glossary/delayed-reveal/page.mdx b/apps/portal/src/app/glossary/delayed-reveal/page.mdx deleted file mode 100644 index 74b94993485..00000000000 --- a/apps/portal/src/app/glossary/delayed-reveal/page.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# Delayed Reveal - -Delayed reveal is a feature that allows you to release NFTs in a [drop](/glossary/drop) with hidden content that can only be revealed at a later time. -The owner of the smart contract (or a wallet with the appropriate permissions) can [lazy-mints](/glossary/lazy-minting) a batch of NFTs, along with placeholder metadata and a password. - -Until the NFTs are revealed using this password, the metadata of the NFTs will be the placeholder metadata, and the "real" metadata is not visible to external parties. - -This is achieved by using the password as an encryption/decryption key to encrypt the URI containing the "real" metadata. -The encrypted URI is stored onchain, and the password is stored off-chain, only known by the owner. - -When the NFTs are revealed, the owner of the smart contract (or a wallet with the appropriate permissions) -can decrypt the URI using the password, and the "real" metadata is revealed. - -[Learn more from our feature release product update](https://blog.thirdweb.com/delayed-reveal-nfts/). diff --git a/apps/portal/src/app/glossary/drop/page.mdx b/apps/portal/src/app/glossary/drop/page.mdx deleted file mode 100644 index bcd5c00e08f..00000000000 --- a/apps/portal/src/app/glossary/drop/page.mdx +++ /dev/null @@ -1,15 +0,0 @@ -# Drop - -A drop smart contract allows the owner of the contract to [lazy mint](/glossary/lazy-minting) NFTs _(unless it is an ERC20 drop)_, -and have other users mint them, typically under the conditions defined in the smart contract’s [claim phases](/glossary/claim-phases), although these are not required. - -This is a common pattern for projects that want their community to be able to claim tokens: - -1. The contract owner defines the metadata for the tokens: - - - For NFTs, this means they [lazy mint](/glossary/lazy-minting) the NFTs by providing the metadata for each NFT. - - For ERC20 tokens, the token metadata is defined when the contract is deployed. - -2. The contract owner defines how user’s can claim the tokens, optionally configuring [claim phases](/glossary/claim-phases). - -3. Users can claim tokens by calling the `claim` function on the contract, which will mint the tokens to the user’s address. diff --git a/apps/portal/src/app/glossary/entry-point/page.mdx b/apps/portal/src/app/glossary/entry-point/page.mdx deleted file mode 100644 index 087ab328360..00000000000 --- a/apps/portal/src/app/glossary/entry-point/page.mdx +++ /dev/null @@ -1,4 +0,0 @@ -# Entry Point - -The EntryPoint is a singleton contract (a contract that has a predictable address that is the same on every chain and only one instance per chain). -It has two methods that are used as entry points to execute bundles of UserOperations: `handleOps` and `handleAggregatedOps` which validate and execute user operation(s). diff --git a/apps/portal/src/app/glossary/externally-owned-account/page.mdx b/apps/portal/src/app/glossary/externally-owned-account/page.mdx deleted file mode 100644 index e9553de9621..00000000000 --- a/apps/portal/src/app/glossary/externally-owned-account/page.mdx +++ /dev/null @@ -1,4 +0,0 @@ -# Externally Owned Account - -An Externally Owned Account (EOA) is an account controlled by the owner of the account's private key usually through a wallet application. -Examples include MetaMask, Coinbase Wallet, and Phantom. diff --git a/apps/portal/src/app/glossary/factory-contract/page.mdx b/apps/portal/src/app/glossary/factory-contract/page.mdx deleted file mode 100644 index 0dd4eb50d61..00000000000 --- a/apps/portal/src/app/glossary/factory-contract/page.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Factory contract - -A factory contract is a smart contract that is used to deploy other smart contracts. diff --git a/apps/portal/src/app/glossary/gas/page.mdx b/apps/portal/src/app/glossary/gas/page.mdx deleted file mode 100644 index 8f4415a929c..00000000000 --- a/apps/portal/src/app/glossary/gas/page.mdx +++ /dev/null @@ -1,17 +0,0 @@ -# Gas Fees - -All transactions (operations that change information stored on the blockchain) require a gas fee, -which is used to cover the costs of the computational resources to execute that transaction. - -Gas fees are typically paid in the currency that is native to the blockchain you are interacting with. For example, if you are using the Ethereum blockchain, you will need to pay gas fees in Ether. - -While using thirdweb is free, you will need to cover the cost of performing actions that update the blockchain's state. - -This includes actions performed via the thirdweb [dashboard](https://thirdweb.com/team), our [SDKs](/contracts), or any of our other products, including: - -- Deploying smart contracts -- [Lazy-minting](/glossary/lazy-minting) the metadata of your NFTs -- Updating permissions on your smart contracts -- Setting [claim phases](/glossary/claim-phases) - -[Learn more on the official Ethereum documentation](https://ethereum.org/en/developers/docs/gas/). diff --git a/apps/portal/src/app/glossary/gasless-transactions/page.mdx b/apps/portal/src/app/glossary/gasless-transactions/page.mdx deleted file mode 100644 index eae6186803e..00000000000 --- a/apps/portal/src/app/glossary/gasless-transactions/page.mdx +++ /dev/null @@ -1,22 +0,0 @@ -import { ArticleIconCard, Callout, Stack } from "@doc"; -import { GraduationCap } from "lucide-react"; - -# Gasless Transactions - -Gasless Transactions, also known as meta-transactions, are transactions that have the [gas fee](/glossary/gas) -paid for by a third party instead of the transaction sender. -Typically, this means the dApp owner covers the gas costs of their users' transactions, providing a more seamless user experience. - -This works by having the user sign a message that is then sent to a relayer, which pays the gas fee and forwards the transaction to the blockchain. - -You can attract a broader audience by removing the need to have gas to use your application. Engine offers multiple options for developers looking to sponsor gas for their users' transactions. - - - - - - diff --git a/apps/portal/src/app/glossary/interoperability/page.mdx b/apps/portal/src/app/glossary/interoperability/page.mdx deleted file mode 100644 index 07cf341c5db..00000000000 --- a/apps/portal/src/app/glossary/interoperability/page.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Interoperability - -Interoperability refers to the ability of different networks to share data or assets (like tokens) and interact with each other. - -For example, if Blockchain A is interoperable with Blockchain B, it means that a user could send tokens from Blockchain A to Blockchain B in a way that's secure and verifiable on both chains. diff --git a/apps/portal/src/app/glossary/ipfs/page.mdx b/apps/portal/src/app/glossary/ipfs/page.mdx deleted file mode 100644 index 0268d26c7c8..00000000000 --- a/apps/portal/src/app/glossary/ipfs/page.mdx +++ /dev/null @@ -1,14 +0,0 @@ -# IPFS - -IPFS (InterPlanetary File System) is a protocol to store files in a decentralized peer-to-peer network. - -Storing information on the blockchain is expensive and comes with significant size limitations, -IPFS provides a way to store files in a decentralized manner _not_ on the blockchain, sometimes referred to as "off-chain" storage. - -To secure content on IPFS forever, a node must [pin](https://docs.ipfs.tech/concepts/persistence/) the content, otherwise, it may be discarded and therefore made unavailable. -[Learn more about how IPFS works](https://ipfs.tech/#how). - -To read data from IPFS, an [IPFS Gateway](https://docs.ipfs.tech/concepts/ipfs-gateway/) is required. This allows you to access data from the IPFS protocol on browsers and other HTTP clients, such -as when building an application using our [SDK](/contracts). - -Out of the box, all of our tools use [Storage](/storage) to store, pin, and retrieve data from IPFS via a gateway, currently powered by [Pinata](https://pinata.cloud/) under the hood. diff --git a/apps/portal/src/app/glossary/layout.tsx b/apps/portal/src/app/glossary/layout.tsx deleted file mode 100644 index ab490b90261..00000000000 --- a/apps/portal/src/app/glossary/layout.tsx +++ /dev/null @@ -1,12 +0,0 @@ -import { DocLayout } from "@/components/Layouts/DocLayout"; -import { GlossaryBreadcrumb } from "./_components/GlossaryBreadcrumb"; -import { sidebar } from "./sidebar"; - -export default async function Layout(props: { children: React.ReactNode }) { - return ( - - - {props.children} - - ); -} diff --git a/apps/portal/src/app/glossary/lazy-minting/page.mdx b/apps/portal/src/app/glossary/lazy-minting/page.mdx deleted file mode 100644 index 6c1f93b5866..00000000000 --- a/apps/portal/src/app/glossary/lazy-minting/page.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Lazy Minting - -Lazy minting is the preparation of NFT metadata without actually minting the NFT to a wallet address. - -This is a useful process for smart contract admins who want to prepare metadata for NFTs that will be minted by other wallets in a [drop](/glossary/drop), -_without_ paying the [gas cost](/glossary/gas) to mint those NFTs. - -The typical process for lazy minting is: - -1. Contract admin lazy-mints NFT metadata (either in bulk or for individual NFTs). -2. Contract admin defines how NFTs can be minted using [claim phases](/glossary/claim-phases). -3. Other wallets mint NFTs by claiming them. When they claim, they pay the gas cost to mint the NFT and the NFT is minted to their wallet address. diff --git a/apps/portal/src/app/glossary/local-wallet/page.mdx b/apps/portal/src/app/glossary/local-wallet/page.mdx deleted file mode 100644 index f6127e9bded..00000000000 --- a/apps/portal/src/app/glossary/local-wallet/page.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Local Wallet - -A local wallet is a type of wallet that allows you to create wallets within your application or project. - -It is a non-custodial solution that simplifies the onboarding process by offering a "checkout as guest" experience. -This improves the user experience for web3 apps in two ways: - -1. It enables non-web3 native users to get started easily without having to create a wallet with an external provider like MetaMask. -2. It hides transaction confirmations from users. With a local wallet, you can generate wallets on the backend, - and each app can have one wallet that is app-scoped. diff --git a/apps/portal/src/app/glossary/minting/page.mdx b/apps/portal/src/app/glossary/minting/page.mdx deleted file mode 100644 index da0d0bd455d..00000000000 --- a/apps/portal/src/app/glossary/minting/page.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# Minting - -Minting is the process of creating new tokens on the blockchain. These tokens can be any type of asset, such as ERC-20, ERC-721 or ERC-1155 tokens. -Minting is usually done by the creator of the token (the default admin), but can also be done by anyone who has been given [permission](/contracts/build/extensions/general/Permissions) to mint tokens by the creator. - -Minting is enabled on contracts that implement a `mint` function. diff --git a/apps/portal/src/app/glossary/nft/page.mdx b/apps/portal/src/app/glossary/nft/page.mdx deleted file mode 100644 index 6582ef08620..00000000000 --- a/apps/portal/src/app/glossary/nft/page.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# NFT - -A Non-fungible token (NFT) is a type of cryptographic token that represents something unique; -non-fungible tokens are thus not mutually interchangeable. -It is defined by the [ERC-721 standard](https://eips.ethereum.org/EIPS/eip-721), which is a standard for creating NFTs on the Ethereum blockchain. -This is in contrast to ERC-20 tokens, which are 1:1 exchangeable. - -An analogy to highlight this difference is that an ERC-20 token is like a \$20 bill, where the value of Sally's \$20 bill is equivalent to the value of John's \$20 bill. -Think of an NFT as a collector's item, like a rare baseball card. Each card, or NFT, is unique and has different values based on the player, the year it was made, its condition, and other factors. -When you buy a rare baseball card, you often get a certificate of authenticity and know the history of the card — who owned it, when it was sold, etc. The same applies to NFTs, but this information is recorded on the blockchain, making it transparent and impossible to forge. -An NFT contains information on the token's provenance. The entire history of that NFT, -including its creation and any subsequent transactions, is recorded on the blockchain, providing proof of authenticity and ownership. diff --git a/apps/portal/src/app/glossary/non-custodial-wallet/page.mdx b/apps/portal/src/app/glossary/non-custodial-wallet/page.mdx deleted file mode 100644 index fe34522d78b..00000000000 --- a/apps/portal/src/app/glossary/non-custodial-wallet/page.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Non-Custodial Wallet - -A non-custodial wallet (also known as a self-custody wallet) is a wallet where the user has full control of their security & assets. -The user is solely responsible for the security of their private key and therefore their funds. -Examples of non-custodial wallets are Coinbase Wallet, Electron, and Ledger. diff --git a/apps/portal/src/app/glossary/page.mdx b/apps/portal/src/app/glossary/page.mdx deleted file mode 100644 index e0183ebbd1f..00000000000 --- a/apps/portal/src/app/glossary/page.mdx +++ /dev/null @@ -1,46 +0,0 @@ -import { createMetadata } from "@doc"; - -export const metadata = createMetadata({ - title: "Glossary", - description: - "This section aims to guide you through web3 concepts, including EIPs and thirdweb-specific innovations", - image: { - title: "thirdweb Glossary", - icon: "thirdweb", - }, -}); - -# Glossary - -This section aims to guide you through web3 concepts, including [EIPs](https://eips.ethereum.org/) and -thirdweb-specific innovations. - -| Term | Description | -| -------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -| [Claim phases](/glossary/claim-phases) | Claim phases or "claim conditions" allow you to configure various aspects of a drop; such as who can claim tokens, how many tokens will be released, the price of each token, release date, etc. | -| [Claiming](/glossary/claiming) | Claiming is the process of transferring token ownership to the claimer's wallet.. | -| [Composability](/glossary/composability) | Composability refers to the ability for different protocols and smart contracts to interact and build upon each other. | -| [Delayed reveal](/glossary/delayed-reveal) | Delayed reveal is a feature that allows you to release NFTs in a drop with hidden content that can only be revealed at a later time. The owner of the smart contract (or a wallet with the appropriate permissions) can lazy-mint a batch of NFTs, along with placeholder metadata and a password. | -| [Drop](/glossary/drop) | A drop smart contract allows the owner of the contract to lazy mint NFTs (unless it is an ERC20 drop), and have other users mint them, typically under the conditions defined in the smart contract’s claim phases, although these are not required. | -| [Externally Owned Account](/glossary/externally-owned-account) | An Externally Owned Account (EOA) is an account controlled by the owner of the account's private key. | -| [Factory Contract](/glossary/factory-contract) | A factory contract is a smart contract that is used to deploy other smart contracts. | -| [Gas fees](/glossary/gas) | All transactions (operations that change information stored on the blockchain) require a gas fee, which is used to cover the costs of the computational resources to execute that transaction. | -| [Gasless Transactions](/glossary/gasless-transactions) | Gasless transactions, also known as meta-transactions, are transactions that have the gas fee paid for by a third party instead of the transaction sender. Typically, this means the dApp owner covers the gas costs of their users' transactions, providing a more seamless user experience. | -| [Interoperability](/glossary/interoperability) | Interoperability refers to the ability of different networks to share data or assets (like tokens) and interact with each other. | -| [IPFS](/glossary/ipfs) | IPFS is a protocol to store files in a decentralized peer-to-peer network. | -| [Lazy minting](/glossary/lazy-minting) | Lazy minting is the preparation of NFT metadata without actually minting the NFT to a wallet address. | -| [Local Wallet](/glossary/local-wallet) | A local wallet is a type of wallet that allows you to create wallets within your application or project. | -| [Minting](/glossary/minting) | Minting is the process of creating new tokens on the blockchain.. | -| [NFT](/glossary/nft) | A Non-fungible token (NFT) is a type of cryptographic token that is not mutually interchangeable. | -| [Non-custodial Wallet](/glossary/non-custodial-wallet) | A non-custodial wallet (also known as a self-custody wallet) is a wallet where the user is solely responsible for their private key. | -| [Permissionless](/glossary/permissionless) | Anyone can interact with a smart contract without needing special permission or approval. | -| [Proxy Contracts](/glossary/local-wallet) | A Proxy smart contract contains the [Storage](/storage) for an upgradable contract that allows you to modify its logic post-deployment. | -| [RPC URL](/glossary/rpc) | An RPC URL is an endpoint that enables an application to communicate with a blockchain network. It is used to send requests (initiate transactions) and receive responses (read data) from the blockchain, enabling developers to build applications that interact with the blockchain. | -| [Signature-based minting](/glossary/signature-based-minting) | Signature-based minting, or "on-demand minting" allows a smart contract admin to generate signatures that can be used by other wallets to allow them to mint tokens on your smart contract in real-time. | -| [Smart Contract](/glossary/smart-contract) | A smart contract is a computer program, stored on the blockchain. | -| [Smart Wallet](/glossary/smart-wallet) | A Smart Wallet is a wallet that is controlled by a smart contract following the [ERC-4337 specification](https://eips.ethereum.org/EIPS/eip-4337). | -| [Soulbound tokens](/glossary/soulbound) | Soulbound tokens refer to NFTs that are permanently attached to a specific wallet address on the blockchain. | -| [Staking](/glossary/staking) | Staking is the process of locking up tokens to support the operations of a blockchain network. | -| [Token](/glossary/token) | A token is a type of digital asset that represents a particular value or utility. | -| [Wallet](/glossary/wallet) | A wallet is a user's way of interacting with the blockchain.. | -| [Bundler](/glossary/bundler) | A bundler is a node that monitors the alternative mempool of `UserOperations` and bundles multiple `UserOps` together to forward to the EntryPoint contract as a single transaction. | diff --git a/apps/portal/src/app/glossary/paymaster/page.mdx b/apps/portal/src/app/glossary/paymaster/page.mdx deleted file mode 100644 index a390731d421..00000000000 --- a/apps/portal/src/app/glossary/paymaster/page.mdx +++ /dev/null @@ -1,10 +0,0 @@ -# Paymaster - -A paymaster is a smart contract that relays transactions. -It provides a service that enables a third party to pay the transaction fee on behalf -of the user by funding the paymaster in advance. -The Paymaster acts as a gas reserve which then can be used during the call execution via the -`EntryPoint` contract. - -The thirdweb paymaster is initially paid for by thirdweb. -By using an [API key](/api-keys), the usage is tracked and billed. diff --git a/apps/portal/src/app/glossary/permissionless/page.mdx b/apps/portal/src/app/glossary/permissionless/page.mdx deleted file mode 100644 index 15fcdb8d09a..00000000000 --- a/apps/portal/src/app/glossary/permissionless/page.mdx +++ /dev/null @@ -1,7 +0,0 @@ -# Permissionless - -On the context of smart contracts, permissionless means that anyone can interact with the contract without needing special permission or approval. -Smart contracts can be deployed on public blockchains like Ethereum, -promoting open access and transparency. While anyone can interact with a permissionless smart contract, -the contract's code may still limit certain operations (like modifying the contract or accessing certain data) -to specific roles, such as the contract's owner or creator. diff --git a/apps/portal/src/app/glossary/proxy-contracts/page.mdx b/apps/portal/src/app/glossary/proxy-contracts/page.mdx deleted file mode 100644 index 73012ef95dc..00000000000 --- a/apps/portal/src/app/glossary/proxy-contracts/page.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Proxy Contracts - -A Proxy smart contract contains the [Storage](/storage) for an upgradable contract that allows you to modify its logic post-deployment. - -A smart contract is made up of (1) persistent state/storage, and (2) logic defined for how this state can be mutated. Upgrading a smart contract means changing the logic defined for how the smart contract’s state can be mutated. - -An “upgradeable smart contract” is two smart contracts considered together as one system: - -1. **Proxy smart contract**: The smart contract whose state/storage we’re concerned with. -2. **Implementation smart contract**: A stateless smart contract that defines the logic for how the proxy smart contract’s state can be mutated. - -To _upgrade_ the smart contract, simply deploy a new implementation contract and call the upgrade function on the proxy contract to _upgrade_ to the new implementation. diff --git a/apps/portal/src/app/glossary/rpc/page.mdx b/apps/portal/src/app/glossary/rpc/page.mdx deleted file mode 100644 index 20065dbdd9e..00000000000 --- a/apps/portal/src/app/glossary/rpc/page.mdx +++ /dev/null @@ -1,8 +0,0 @@ -# RPC URLs - -An RPC (Remote Procedure Call) URL -is an endpoint that enables an application to communicate with a blockchain network. -It is used to send requests (initiate transactions) and receive responses (read data) from the blockchain, -enabling developers to build applications that interact with the blockchain. - -Out of the box, we provide free [RPC URLs](https://thirdweb.com/chainlist) for all supported blockchains, including All EVM-compatible networks. diff --git a/apps/portal/src/app/glossary/sidebar.tsx b/apps/portal/src/app/glossary/sidebar.tsx deleted file mode 100644 index 55d4fee1791..00000000000 --- a/apps/portal/src/app/glossary/sidebar.tsx +++ /dev/null @@ -1,115 +0,0 @@ -import type { SideBar } from "@/components/Layouts/DocLayout"; - -export const sidebar: SideBar = { - name: "Glossary", - links: [ - { - name: "Claim Phases", - href: "/glossary/claim-phases", - }, - { - name: "Claiming", - href: "/glossary/claiming", - }, - { - href: "/glossary/composability", - name: "Composability", - }, - { - href: "/glossary/delayed-reveal", - name: "Delayed Reveal", - }, - { - href: "/glossary/drop", - name: "Drop", - }, - { - name: "Externally Owned Account", - href: "/glossary/externally-owned-account", - }, - { - name: "Factory Contract", - href: "/glossary/factory-contract", - }, - { - name: "Gas fees", - href: "/glossary/gas", - }, - { - name: "Gasless Transactions", - href: "/glossary/gasless-transactions", - }, - { - name: "Interoperability", - href: "/glossary/interoperability", - }, - { - name: "IPFS", - href: "/glossary/ipfs", - }, - { - name: "Lazy minting", - href: "/glossary/lazy-minting", - }, - { - name: "Local Wallet", - href: "/glossary/local-wallet", - }, - { - name: "Minting", - href: "/glossary/minting", - }, - { - name: "NFT", - href: "/glossary/nft", - }, - { - name: "Non-custodial Wallet", - href: "/glossary/non-custodial-wallet", - }, - { - name: "Permissionless", - href: "/glossary/permissionless", - }, - { - name: "Proxy Contracts", - href: "/glossary/proxy-contracts", - }, - { - name: "RPC URL", - href: "/glossary/rpc", - }, - { - name: "Signature-based minting", - href: "/glossary/signature-based-minting", - }, - { - name: "Smart Contract", - href: "/glossary/smart-contract", - }, - { - name: "Smart Account", - href: "/glossary/smart-account", - }, - { - name: "Soulbound tokens", - href: "/glossary/soulbound", - }, - { - name: "Staking", - href: "/glossary/staking", - }, - { - name: "Token", - href: "/glossary/token", - }, - { - name: "Wallet", - href: "/glossary/wallet", - }, - { - name: "Bundler", - href: "/glossary/bundler", - }, - ], -}; diff --git a/apps/portal/src/app/glossary/signature-based-minting/page.mdx b/apps/portal/src/app/glossary/signature-based-minting/page.mdx deleted file mode 100644 index 119814768a7..00000000000 --- a/apps/portal/src/app/glossary/signature-based-minting/page.mdx +++ /dev/null @@ -1,12 +0,0 @@ -# Signature-based Minting - -Signature-based minting, or "on-demand minting" allows a smart contract admin to generate signatures -that can be used by other wallets to allow them to mint tokens on your smart contract in real-time. - -This allows you to conditionally generate signatures based on some condition/criteria, or allow a user to mint -NFTs with metadata that you specify. Enabling use cases such as: - -- [Allowing NFT holders to mint for free](https://blog.thirdweb.com/guides/signature-drop/) -- [Creating a community-made NFT collection](https://blog.thirdweb.com/guides/mint-nft-unique-code/) -- [Restricted mints to users who are GitHub contributors](https://blog.thirdweb.com/guides/allow-github-contributors-to-mint-an-nft/) -- [Restricted mints to Discord members](https://github.com/thirdweb-example/community-rewards) diff --git a/apps/portal/src/app/glossary/smart-contract/page.mdx b/apps/portal/src/app/glossary/smart-contract/page.mdx deleted file mode 100644 index 473d0ccc12c..00000000000 --- a/apps/portal/src/app/glossary/smart-contract/page.mdx +++ /dev/null @@ -1,13 +0,0 @@ -# Smart Contract - -A smart contract is a computer program, stored on the blockchain. -Smart contracts allow trustless transactions to be executed without third parties - the smart contract enforces the rules of the transaction automatically. -These transactions are trackable and irreversible. - -Key features of smart contracts are: - -- **Autonomous**: Once a smart contract is initiated, it can act by itself without further participant involvement. - -- **Decentralized**: No single party has control over the entirety of the contract, and it cannot be modified after deployment. - -- **Deterministic**: Outcomes can be determined from the inputs and the contract code. diff --git a/apps/portal/src/app/glossary/smart-wallet/page.mdx b/apps/portal/src/app/glossary/smart-wallet/page.mdx deleted file mode 100644 index 8ff4ce1bc3d..00000000000 --- a/apps/portal/src/app/glossary/smart-wallet/page.mdx +++ /dev/null @@ -1,55 +0,0 @@ -# Smart Account - -A Smart Account is a wallet that is controlled by a smart contract following the [ERC-4337 specification](https://eips.ethereum.org/EIPS/eip-4337). - -Ethereum has 2 types of accounts to transfer and receive tokens: EOAs (Externally Owned Accounts) and Contract Accounts. A smart contract wallet is a wallet managed by a contract account -instead of an EOA. A smart account is a wallet type requiring **no private keys or seed phrases**. -Smart contract wallets rely on code instead of private keys to secure and recover wallet information. -Instead, you set _who_ and _under what conditions_, users may access the wallet via smart contracts. - -**A smart contract wallet is a type of Web3 wallet powered by smart contracts.** - -This smart account is unlocked by a 'key' - a personal account. This key can be anything from a [MetaMask wallet](/typescript/v5/supported-wallets/io.metamask) or even an [in-App Wallet](/typescript/v5/in-app-wallet) and is used as a way to 'sign in' to the wallet. - -Benefits of Smart Accounts: - -1. Optimized transaction efficiency & batch transactions - - Combine multiple transactions into a single transaction to save on [gas fees](/glossary/gas) -2. Improved Security Features -3. Social & Multi-Sig Recovery - - Recover a wallet without seed phrases/passwords - - Nominate a trusted person to recover your wallet in the case of an emergency - -## Terminology - -### UserOperations - -This is the data structure for the transaction that the user wants to perform. It contains the following fields: - -- `sender`: The account making the operation. -- `nonce`: Anti-replay parameter; also used as the salt for first-time account creation. -- `initCode`: The initialization code needed to create the account (needed if and only if the account is not yet onchain). -- `callData`: The data to pass to the `sender` during the operation. -- `callGasLimit`: The amount of gas to allocate for the operation. -- `verificationGasLimit`: The amount of gas to allocate for the verification step. -- `preVerificationGas`: The amount of gas to pay for to compensate the bundler for pre-verification execution and calldata. -- `maxFeePerGas`: Maximum fee per gas (similar to [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559) `max_fee_per_gas`). -- `maxPriorityFeePerGas`: Maximum priority fee per gas (similar to [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)). -- `paymasterAndData`: Address of paymaster sponsoring the transaction, followed by extra data to send to the paymaster (empty for self-sponsored transaction). -- `signature`: Data passed into the account along with the nonce during the verification step. Should depend on the `chainid` and `EntryPoint` address to prevent replay attacks. - -### EntryPoint - -The EntryPoint is a singleton contract (a contract that has a predictable address that is the same on every chain). -It has two methods that are used as entry points to execute bundles of UserOperations: `handleOps` and `handleAggregatedOps`. - -### Bundler (relayer) - -A bundler is a smart contract that bundles multiple 'UserOperations' into a single bundle, a `handleOps` call, to the `EntryPoint` contract. - -### Paymaster - -A paymaster is a smart contract that relays transactions. It provides a service that enables a third party to pay -the transaction fee on behalf of the user by funding the paymaster in advance. The Paymaster acts as a gas reserve which then -can be used during the call execution via `EntryPoint`. The thirdweb [Account ABstraction](/connect/account-abstraction) paymaster is initially paid for by thirdweb. By using an API key, -the usage is tracked and billed. diff --git a/apps/portal/src/app/glossary/soulbound/page.mdx b/apps/portal/src/app/glossary/soulbound/page.mdx deleted file mode 100644 index 53474ef44ee..00000000000 --- a/apps/portal/src/app/glossary/soulbound/page.mdx +++ /dev/null @@ -1,6 +0,0 @@ -# Soulbound Tokens - -Soulbound tokens refer to NFTs -that are permanently attached to a specific wallet address on the blockchain. - -Once a soulbound token is created, it cannot be transferred, sold, or traded to another address. diff --git a/apps/portal/src/app/glossary/staking/page.mdx b/apps/portal/src/app/glossary/staking/page.mdx deleted file mode 100644 index 4435b23782a..00000000000 --- a/apps/portal/src/app/glossary/staking/page.mdx +++ /dev/null @@ -1,9 +0,0 @@ -# Staking - -Staking is the process of locking up tokens to support the operations of a blockchain network. -In return for staking, users receive rewards in the form of additional tokens. -Staking is a key element of Proof of Stake (PoS) consensus mechanisms, which are used by many blockchains to secure their networks. - -When you stake your tokens, you essentially lock them up in the network for a certain period. Depending on the specific protocol, staking your tokens might allow you to participate in network governance (voting on various decisions), validate transactions, and earn rewards. - -Staking serves the dual purpose of incentivizing participants to operate in the best interest of the network (since they have a financial stake in it) and deter malicious activity (since malicious actors stand to lose their staked tokens). diff --git a/apps/portal/src/app/glossary/token/page.mdx b/apps/portal/src/app/glossary/token/page.mdx deleted file mode 100644 index 19abce042ff..00000000000 --- a/apps/portal/src/app/glossary/token/page.mdx +++ /dev/null @@ -1,5 +0,0 @@ -# Token - -A token is a type of digital asset that represents a particular value or utility. Tokens are defined by smart contracts which follow a token standard such as the ERC-20, ERC-1155 or ERC-721 standards. - -Tokens are a critical component of decentralized applications (dApps) built on top of blockchain platforms. They can incentivize certain behaviors, represent ownership of digital or physical assets, or facilitate transactions within the dApp's ecosystem. diff --git a/apps/portal/src/app/glossary/wallet/page.mdx b/apps/portal/src/app/glossary/wallet/page.mdx deleted file mode 100644 index 357e65df1af..00000000000 --- a/apps/portal/src/app/glossary/wallet/page.mdx +++ /dev/null @@ -1,3 +0,0 @@ -# Wallet - -A wallet is a user's way of interacting with the blockchain. Wallets can be used to store, send, and receive blockchain assets such as ERC-20 tokens and NFTS.