Issue a Fungible Token (2024)

Anyone can issue various types of tokens in the XRP Ledger, ranging from informal "IOUs" to fiat-backed stablecoins, purely digital fungible and semi-fungible tokens, and more. This tutorial shows the technical steps of creating a token in the ledger. For more information on how XRP Ledger tokens work, see Issued Currencies; for more on the business decisions involved in issuing a stablecoin, see Stablecoin Issuer.

Prerequisites

  • You need two funded XRP Ledger accounts, each with an address, secret key, and some XRP. For this tutorial, you can generate new test credentials as needed.
    • Each address needs enough XRP to satisfy the reserve requirement including the additional reserve for a trust line.
  • You need a connection to the XRP Ledger network. As shown in this tutorial, you can use public servers for testing.
  • You should be familiar with the Getting Started instructions for your preferred client library. This page provides examples for the following:
    • JavaScript with the xrpl.js library. See Get Started Using JavaScript for setup steps.
    • Python with the xrpl-py library. See Get Started using Python for setup steps.
    • Java with the xrpl4j library. See Get Started Using Java for setup steps.
    • You can also read along and use the interactive steps in your browser without any setup.

Example Code

Complete sample code for all of the steps of these tutorials is available under the MIT license.

Steps

1. Get Credentials

To transact on the XRP Ledger, you need an address and secret key, and some XRP. You also need one or more recipients who are willing to hold the tokens you issue: unlike in some other blockchains, in the XRP Ledger you cannot force someone to hold a token they do not want.

The best practice is to use "cold" and "hot" addresses. The cold address is the issuer of the token. The hot address is like a regular user's address that you control. It receives tokens from the cold address, which you can then transfer to other users. A hot address is not strictly necessary, since you could send tokens directly to users from the cold address, but it is good practice for security reasons. In production, you should take extra care of the cold address's cryptographic keys (for example, keeping them offline) because it is much harder to replace a cold address than a hot address.

In this tutorial, the hot address receives the tokens you issue from the cold address. You can get the keys for two addresses using the following interface.

  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Issue a Fungible Token (1)Generating Keys...

Caution: Ripple provides the Testnet and Devnet for testing purposes only, and sometimes resets the state of these test networks along with all balances. As a precaution, do not use the same addresses on Testnet/Devnet and Mainnet.

When you're building production-ready software, you should use an existing account, and manage your keys using a secure signing configuration.

2. Connect to the Network

You must be connected to the network to submit transactions to it. The following code shows how to connect to a public XRP Ledger Testnet server with a supported client library:

// In browsers, use a <script> tag. In Node.js, uncomment the following line:// const xrpl = require('xrpl')// Wrap code in an async function so we can use awaitasync function main() { // Define the network client const client = new xrpl.Client("wss://s.altnet.rippletest.net:51233") await client.connect() // ... custom code goes here // Disconnect when done (If you omit this, Node.js won't end the process) await client.disconnect()}main()

Note: The JavaScript code samples in this tutorial use the async/await pattern. Since await needs to be used from within an async function, the remaining code samples are written to continue inside the main() function started here. You can also use Promise methods .then() and .catch() instead of async/await if you prefer.

For this tutorial, click the following button to connect:

  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Connection status: Not connected

Issue a Fungible Token (2)...

3. Configure Issuer Settings

First, configure the settings for your cold address (which will become the issuer of your token). Most settings can be reconfigured later, with the following exceptions:

  • Default Ripple: This setting is required so that users can send your token to each other. It's best to enable it before setting up any trust lines or issuing any tokens.
  • Authorized Trust Lines: (Optional) This setting (also called "Require Auth") limits your tokens to being held only by accounts you've explicitly approved. You cannot enable this setting if you already have any trust lines or offers for any token. Note: To use authorized trust lines, you must perform additional steps that are not shown in this tutorial.

Other settings you may want to, optionally, configure for your cold address (issuer):

SettingRecommended ValueSummary
Require Destination TagsEnabled or DisabledEnable if you process withdrawals of your token to outside systems. (For example, your token is a stablecoin.)
Disallow XRPEnabled or DisabledEnable if this address isn't meant to process XRP payments.
Transfer Fee0–1%Charge a percentage fee when users send your token to each other.
Tick Size5Limit the number of decimal places in exchange rates for your token in the decentralized exchange. A tick size of 5-6 reduces churn of almost-equivalent offers and speeds up price discovery compared to the default of 15.
Domain(Your domain name)Set to a domain you own so can verify ownership of the accounts. This can help reduce confusion or impersonation attempts.

You can change these settings later as well.

Note: Many issuing settings apply equally to all tokens issued by an address, regardless of the currency code. If you want to issue multiple types of tokens in the XRP Ledger with different settings, you should use a different address to issue each different token.

The following code sample shows how to send an AccountSet transaction to enable the recommended cold address settings:

 // Configure issuer (cold address) settings ---------------------------------- const cold_settings_tx = { "TransactionType": "AccountSet", "Account": cold_wallet.address, "TransferRate": 0, "TickSize": 5, "Domain": "6578616D706C652E636F6D", // "example.com" "SetFlag": xrpl.AccountSetAsfFlags.asfDefaultRipple, // Using tf flags, we can enable more flags in one transaction "Flags": (xrpl.AccountSetTfFlags.tfDisallowXRP | xrpl.AccountSetTfFlags.tfRequireDestTag) } const cst_prepared = await client.autofill(cold_settings_tx) const cst_signed = cold_wallet.sign(cst_prepared) console.log("Sending cold address AccountSet transaction...") const cst_result = await client.submitAndWait(cst_signed.tx_blob) if (cst_result.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${cst_signed.hash}`) } else { throw `Error sending transaction: ${cst_result}` } 
  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Issue a Fungible Token (3)Sending transaction...

4. Wait for Validation

Most transactions are accepted into the next ledger version after they're submitted, which means it may take 4-7 seconds for a transaction's outcome to be final. You should wait for your earlier transactions to be fully validated before proceeding to the later steps, to avoid unexpected failures from things executing out of order. For more information, see Reliable Transaction Submission.

The code samples in this tutorial use helper functions to wait for validation when submitting a transaction:

Tip: Technically, you can configure the hot address in parallel with configuring the issuer address. For simplicity, this tutorial waits for each transaction one at a time.

  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances
Transaction ID:(None)
Latest Validated Ledger Index:(Not connected)
Ledger Index at Time of Submission:(Not submitted)
Transaction LastLedgerSequence:(Not prepared)

5. Configure Hot Address Settings

The hot address does not strictly require any settings changes from the default, but the following are recommended as best practices:

SettingRecommended ValueSummary
Default RippleDisabledLeave this setting disabled. (This is the default.)
Authorized Trust LinesEnabledEnable this setting on the hot address—and never approve any trust lines to the hot address—to prevent accidentally issuing tokens from the wrong address. (Optional, but recommended.)
Require Destination TagsEnabled or DisabledEnable if you process withdrawals of your token to outside systems. (For example, your token is a stablecoin.)
Disallow XRPEnabled or DisabledEnable if this address isn't meant to process XRP payments.
Domain(Your domain name)Set to a domain you own so can verify ownership of the accounts. This can help reduce confusion or impersonation attempts.

The following code sample shows how to send an AccountSet transaction to enable the recommended hot address settings:

 // Configure hot address settings -------------------------------------------- const hot_settings_tx = { "TransactionType": "AccountSet", "Account": hot_wallet.address, "Domain": "6578616D706C652E636F6D", // "example.com" // enable Require Auth so we can't use trust lines that users // make to the hot address, even by accident: "SetFlag": xrpl.AccountSetAsfFlags.asfRequireAuth, "Flags": (xrpl.AccountSetTfFlags.tfDisallowXRP | xrpl.AccountSetTfFlags.tfRequireDestTag) } const hst_prepared = await client.autofill(hot_settings_tx) const hst_signed = hot_wallet.sign(hst_prepared) console.log("Sending hot address AccountSet transaction...") const hst_result = await client.submitAndWait(hst_signed.tx_blob) if (hst_result.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${hst_signed.hash}`) } else { throw `Error sending transaction: ${hst_result.result.meta.TransactionResult}` } 
  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Issue a Fungible Token (4)Sending transaction...

6. Wait for Validation

As before, wait for the previous transaction to be validated by consensus before continuing.

  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances
Transaction ID:(None)
Latest Validated Ledger Index:(Not connected)
Ledger Index at Time of Submission:(Not submitted)
Transaction LastLedgerSequence:(Not prepared)

7. Create Trust Line from Hot to Cold Address

Before you can receive tokens, you need to create a trust line to the token issuer. This trust line is specific to the currency code of the token you want to issue, such as USD or FOO. You can choose any currency code you want; each issuer's tokens are treated as separate in the XRP Ledger protocol. However, users' balances of tokens with the same currency code can ripple between different issuers if the users enable rippling settings.

The hot address needs a trust line like this before it can receive tokens from the issuer. Similarly, each user who wants to hold your token must also create a trust line¹. Each trust line increases the reserve requirement of the hot address, so you must hold enough spare XRP to pay for the increased requirement. Your reserve requirement goes back down if you remove the trust line.

Tip: A trust line has a "limit" on how much the recipient is willing to hold; others cannot send you more tokens than your specified limit. For community credit systems, you may want to configure limits per individual based on how much you trust that person. For other types and uses of tokens, it is normally OK to set the limit to a very large number.

To create a trust line, send a TrustSet transaction from the hot address with the following fields:

FieldValue
TransactionType"TrustSet"
AccountThe hot address. (More generally, this is the account that wants to receive the token.)
LimitAmountAn object specifying how much, of which token, from which issuer, you are willing to hold.
LimitAmount.currencyThe currency code of the token.
LimitAmount.issuerThe cold address.
LimitAmount.valueThe maximum amount of the token you are willing to hold.

The following code sample shows how to send a TrustSet transaction from the hot address, trusting the issuing address for a limit of 1 billion FOO:

 // Create trust line from hot to cold address -------------------------------- const currency_code = "FOO" const trust_set_tx = { "TransactionType": "TrustSet", "Account": hot_wallet.address, "LimitAmount": { "currency": currency_code, "issuer": cold_wallet.address, "value": "10000000000" // Large limit, arbitrarily chosen } } const ts_prepared = await client.autofill(trust_set_tx) const ts_signed = hot_wallet.sign(ts_prepared) console.log("Creating trust line from hot address to issuer...") const ts_result = await client.submitAndWait(ts_signed.tx_blob) if (ts_result.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${ts_signed.hash}`) } else { throw `Error sending transaction: ${ts_result.result.meta.TransactionResult}` } // Create trust line from customer_one to cold address -------------------------------- const trust_set_tx2 = { "TransactionType": "TrustSet", "Account": customer_one_wallet.address, "LimitAmount": { "currency": currency_code, "issuer": cold_wallet.address, "value": "10000000000" // Large limit, arbitrarily chosen } } const ts_prepared2 = await client.autofill(trust_set_tx2) const ts_signed2 = customer_one_wallet.sign(ts_prepared2) console.log("Creating trust line from customer_one address to issuer...") const ts_result2 = await client.submitAndWait(ts_signed2.tx_blob) if (ts_result2.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${ts_signed2.hash}`) } else { throw `Error sending transaction: ${ts_result2.result.meta.TransactionResult}` } const trust_set_tx3 = { "TransactionType": "TrustSet", "Account": customer_two_wallet.address, "LimitAmount": { "currency": currency_code, "issuer": cold_wallet.address, "value": "10000000000" // Large limit, arbitrarily chosen } } const ts_prepared3 = await client.autofill(trust_set_tx3) const ts_signed3 = customer_two_wallet.sign(ts_prepared3) console.log("Creating trust line from customer_two address to issuer...") const ts_result3 = await client.submitAndWait(ts_signed3.tx_blob) if (ts_result3.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${ts_signed3.hash}`) } else { throw `Error sending transaction: ${ts_result3.result.meta.TransactionResult}` } 
  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Issue a Fungible Token (5)Sending transaction...

Note: If you use Authorized Trust Lines, there is an extra step after this one: the cold address must approve the trust line from the hot address. For details of how to do this, see Authorizing Trust Lines.

8. Wait for Validation

As before, wait for the previous transaction to be validated by consensus before continuing.

  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances
Transaction ID:(None)
Latest Validated Ledger Index:(Not connected)
Ledger Index at Time of Submission:(Not submitted)
Transaction LastLedgerSequence:(Not prepared)

9. Send Token

Now you can create tokens by sending a Payment transaction from the cold address to the hot address. This transaction should have the following attributes (dot notation indicates nested fields):

FieldValue
TransactionType"Payment"
AccountThe cold address issuing the token.
AmountAn token amount specifying how much of which token to create.
Amount.currencyThe currency code of the token.
Amount.valueDecimal amount of the token to issue, as a string.
Amount.issuerThe cold address issuing the token.
DestinationThe hot address (or other account receiving the token)
PathsOmit this field when issuing tokens.
SendMaxOmit this field when issuing tokens.
DestinationTagAny whole number from 0 to 232-1. You must specify something here if you enabled Require Destination Tags on the hot address.

You can use auto-filled values for all other required fields.

The following code sample shows how to send a Payment transaction to issue 88 FOO from the cold address to the hot address:

 // Send token ---------------------------------------------------------------- let issue_quantity = "3800" const send_token_tx = { "TransactionType": "Payment", "Account": cold_wallet.address, "Amount": { "currency": currency_code, "value": issue_quantity, "issuer": cold_wallet.address }, "Destination": hot_wallet.address, "DestinationTag": 1 // Needed since we enabled Require Destination Tags // on the hot account earlier. } const pay_prepared = await client.autofill(send_token_tx) const pay_signed = cold_wallet.sign(pay_prepared) console.log(`Cold to hot - Sending ${issue_quantity} ${currency_code} to ${hot_wallet.address}...`) const pay_result = await client.submitAndWait(pay_signed.tx_blob) if (pay_result.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${pay_signed.hash}`) } else { console.log(pay_result) throw `Error sending transaction: ${pay_result.result.meta.TransactionResult}` } issue_quantity = "100" const send_token_tx2 = { "TransactionType": "Payment", "Account": hot_wallet.address, "Amount": { "currency": currency_code, "value": issue_quantity, "issuer": cold_wallet.address }, "Destination": customer_one_wallet.address, "DestinationTag": 1 // Needed since we enabled Require Destination Tags // on the hot account earlier. } const pay_prepared2 = await client.autofill(send_token_tx2) const pay_signed2 = hot_wallet.sign(pay_prepared2) console.log(`Hot to customer_one - Sending ${issue_quantity} ${currency_code} to ${customer_one_wallet.address}...`) const pay_result2 = await client.submitAndWait(pay_signed2.tx_blob) if (pay_result2.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${pay_signed2.hash}`) } else { console.log(pay_result2) throw `Error sending transaction: ${pay_result2.result.meta.TransactionResult}` } issue_quantity = "12" const send_token_tx3 = { "TransactionType": "Payment", "Account": customer_one_wallet.address, "Amount": { "currency": currency_code, "value": issue_quantity, "issuer": cold_wallet.address }, "Destination": customer_two_wallet.address, "DestinationTag": 1 // Needed since we enabled Require Destination Tags // on the hot account earlier. } const pay_prepared3 = await client.autofill(send_token_tx3) const pay_signed3 = customer_one_wallet.sign(pay_prepared3) console.log(`Customer_one to customer_two - Sending ${issue_quantity} ${currency_code} to ${customer_two_wallet.address}...`) const pay_result3 = await client.submitAndWait(pay_signed3.tx_blob) if (pay_result3.result.meta.TransactionResult == "tesSUCCESS") { console.log(`Transaction succeeded: https://testnet.xrpl.org/transactions/${pay_signed3.hash}`) } else { console.log(pay_result3) throw `Error sending transaction: ${pay_result3.result.meta.TransactionResult}` } 
  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Issue a Fungible Token (6)Sending transaction...

10. Wait for Validation

As before, wait for the previous transaction to be validated by consensus before continuing.

  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances
Transaction ID:(None)
Latest Validated Ledger Index:(Not connected)
Ledger Index at Time of Submission:(Not submitted)
Transaction LastLedgerSequence:(Not prepared)

11. Confirm Token Balances

You can check the balances of your token from the perspective of either the token issuer or the hot address. Tokens issued in the XRP Ledger always have balances that sum to 0: negative from the perspective of the issuer and positive from the perspective of the holder.

Use the account_lines method to look up the balances from the perspective of the holder. This lists each trust line along with its limit, balance, and settings.

Use the gateway_balances method to look up balances from the perspective of a token issuer. This provides a sum of all tokens issued by a given address.

Tip: Since the XRP Ledger is fully public, you can check the balances of any account at any time without needing any cryptographic keys.

The following code sample shows how to use both methods:

 // Check balances ------------------------------------------------------------ console.log("Getting hot address balances...") const hot_balances = await client.request({ command: "account_lines", account: hot_wallet.address, ledger_index: "validated" }) console.log(hot_balances.result) console.log("Getting cold address balances...") const cold_balances = await client.request({ command: "gateway_balances", account: cold_wallet.address, ledger_index: "validated", hotwallet: [hot_wallet.address] }) console.log(JSON.stringify(cold_balances.result, null, 2)) client.disconnect()} 
  • Generate
  • Connect
  • Configure Issuer
  • Wait (Issuer Setup)
  • Configure Hot Address
  • Wait (Hot Address Setup)
  • Make Trust Line
  • Wait (TrustSet)
  • Send Token
  • Wait (Payment)
  • Confirm Balances

Issue a Fungible Token (7)Checking...

Next Steps

Now that you've created the token, you can explore how it fits into features of the XRP Ledger:

  • Send tokens from the hot address to other users.
  • Trade it in the decentralized exchange.
  • Monitor for incoming payments of your token.
  • Create an xrp-ledger.toml file and set up domain verification for your token's issuer.
  • Learn about other features of XRP Ledger tokens.

¹ Users can hold your token without explicitly creating a trust line if they buy your token in the decentralized exchange. Buying a token in the exchange automatically creates the necessary trust lines. This is only possible if someone is selling your token in the decentralized exchange.

Issue a Fungible Token (2024)

FAQs

Issue a Fungible Token? ›

Anyone can issue various types of tokens in the XRP Ledger, ranging from informal "IOUs" to fiat-backed stablecoins, purely digital fungible and semi-fungible tokens, and more. This tutorial shows the technical steps of creating a token in the ledger.

What does it mean to issue a token? ›

June 5, 2024

Token issuance is a key aspect of the blockchain ecosystem. It involves creating and distributing new digital assets, often referred to as crypto tokens, that holders can use within specific cryptocurrency networks. This process is essential because it enhances asset liquidity.

How do you create a fungible token? ›

You can also create a fungible token by deploying and initializing a canonical FT contract. On initialization you will define the token's metadata such as its name (e.g. Ethereum), symbol (e.g. ETH) and total supply (e.g. 10M). You will also define an owner , which will own the tokens total supply.

What is a fungible token? ›

A representation of an asset on a blockchain that is interchangeable. Cryptocurrencies are the prime example of fungible tokens because each coin has the same value as any other coin of the same type at any given moment.

What is a fungible issue? ›

An issue of securities that is interchangeable, either at the time of issue or shortly thereafter, with an already seasoned issue of the same obligor. Sometimes used interchangeably for a ... From: fungible issue in The Handbook of International Financial Terms » Subjects: Social sciences — Economics.

Why do companies issue tokens? ›

With the growing adoption of blockchain, businesses find it convenient to use digitized crypto-versions of equity. Tokenized shares are emerging as a means for raising capital in which a business issues shares in the form of digital assets such as crypto coins or tokens.

How do I issue a crypto token? ›

Tokens can be issued through initial coin offerings (ICOs), security token offerings (STOs), or other fundraising mechanisms. During these events, investors purchase tokens using established cryptocurrencies like Bitcoin or Ethereum. Once issued, tokens can be transferred between participants on the blockchain network.

What are examples of fungible token? ›

One example of a fungible token is the FLOW token. It is divisible and non-unique. Any FLOW token can be traded for another FLOW token, and will hold the same value no matter where or when it is issued. Other examples of fungible tokens are Bitcoin (BTC), Ether (ETH), Solana (SOL), Litecoin (LTC), and Polygon (MATIC).

Is gold a fungible token? ›

For example, gold is generally fungible because its value does not depend on any specific form, whether of coins, ingots, or other states.

How much does it cost to make a NFT token? ›

NFT creation involves several costs, which vary depending on the chosen blockchain and marketplace. These costs can range from as low as $0.05 to over $150 per NFT. The primary factors influencing these costs include blockchain fees, gas fees, marketplace account fees, and listing fees.

Why would someone buy a non-fungible token? ›

Investors buy and sell NFTs for many reasons. Some are interested in owning the underlying asset, and others may perceive value in tokenizing an asset into an NFT. Some investors might simply enjoy speculating on its potential to appreciate.

What is the point of an NFT? ›

NFTs have been used to exchange digital tokens that link to a digital file asset. Ownership of an NFT is often associated with a license to use such a linked digital asset but generally does not confer the copyright to the buyer.

What is the difference between NFT and fungible token? ›

Unlike fungible tokens, which are interchangeable and have uniform value (such as crypto like Bitcoin or Ethereum), each NFT is distinct and cannot be exchanged on a one-to-one basis with another NFT. NFTs are indivisible, meaning you can't send fractions of an NFT; you can only transfer the entire token.

What is an example of a fungible? ›

Something described as fungible can be exchanged for something else of the same kind. For example, when we say “oil is a fungible commodity,” we mean that when a purchaser is expecting a delivery of oil, any oil of the stipulated quantity and quality will usually do. Another example of something fungible is cash.

Why did fungible fail? ›

The main event that led to the Microsoft acquisition, referred to as a merger in the court document, was that Fungible failed to sell enough of its Data Processing Unit (DPU) and FS1600 network storage file storage system, meaning it was in danger of running out of money.

Is Bitcoin a fungible or not? ›

Bitcoin and Ether are prominent examples of fungible crypto assets— one bitcoin is equal to any other bitcoin and can be divided into equal pieces of similar value. Conversely, non-fungible crypto assets, commonly referred to as nonfungible tokens, are unique and non-divisible.

What does it mean to give a token? ›

something that you do, or a thing that you give someone, that expresses your feelings or intentions, although it might have little practical effect: As a token of our gratitude for all that you have done, we would like you to accept this small gift. It doesn't have to be a big present - it's just a token.

What is an issued token? ›

In the most basic sense, token issuance is the process of producing new tokens and adding them to the total token supply of a cryptocurrency. Token issuance is usually governed by complex algorithmic calculations that estimate the number of tokens required for the blockchain ecosystem to operate effectively.

What does it mean to make a token? ›

/ˈtoʊkən/ [only before noun] 1involving very little effort or feeling and intended only as a way of showing other people that you think someone or something is important, when really you are not sincere The government has only made a token gesture toward helping the unemployed.

What is an example of a token? ›

In general, a token is an object that represents something else, such as another object (either physical or virtual), or an abstract concept as, for example, a gift is sometimes referred to as a token of the giver's esteem for the recipient.

Top Articles
Warren Buffett’s Berkshire Hathaway sells 34 million Bank of America shares
The Top 6 Most Profitable Affiliate Marketing Programs to Join in 2024
Fighter Torso Ornament Kit
Jail Inquiry | Polk County Sheriff's Office
O'reilly's Auto Parts Closest To My Location
Pnct Terminal Camera
Chatiw.ib
Wfin Local News
Achivr Visb Verizon
Shaniki Hernandez Cam
Xrarse
Betonnen afdekplaten (schoorsteenplaten) ter voorkoming van lekkage schoorsteen. - HeBlad
House Of Budz Michigan
Best Forensic Pathology Careers + Salary Outlook | HealthGrad
Pizza Hut In Dinuba
How Much You Should Be Tipping For Beauty Services - American Beauty Institute
Keurig Refillable Pods Walmart
Keck Healthstream
Testberichte zu E-Bikes & Fahrrädern von PROPHETE.
Panic! At The Disco - Spotify Top Songs
Marine Forecast Sandy Hook To Manasquan Inlet
Bella Bodhi [Model] - Bio, Height, Body Stats, Family, Career and Net Worth 
Grimes County Busted Newspaper
12 Top-Rated Things to Do in Muskegon, MI
U Of Arizona Phonebook
Dulce
Boston Dynamics’ new humanoid moves like no robot you’ve ever seen
European city that's best to visit from the UK by train has amazing beer
The Banshees Of Inisherin Showtimes Near Broadway Metro
Craigslist Rome Ny
Elanco Rebates.com 2022
Boneyard Barbers
Rock Salt Font Free by Sideshow » Font Squirrel
Mega Millions Lottery - Winning Numbers & Results
Solve 100000div3= | Microsoft Math Solver
Nacho Libre Baptized Gif
Today's Final Jeopardy Clue
CVS Near Me | Somersworth, NH
Metra Schedule Ravinia To Chicago
Kelly Ripa Necklace 2022
11301 Lakeline Blvd Parkline Plaza Ctr Ste 150
Nba Props Covers
St Anthony Hospital Crown Point Visiting Hours
Armageddon Time Showtimes Near Cmx Daytona 12
Lbl A-Z
R: Getting Help with R
Autozone Battery Hold Down
Killer Intelligence Center Download
Sams Gas Price San Angelo
El Patron Menu Bardstown Ky
Naomi Soraya Zelda
Craigslist Charlestown Indiana
Latest Posts
Article information

Author: Dr. Pierre Goyette

Last Updated:

Views: 6001

Rating: 5 / 5 (70 voted)

Reviews: 93% of readers found this page helpful

Author information

Name: Dr. Pierre Goyette

Birthday: 1998-01-29

Address: Apt. 611 3357 Yong Plain, West Audra, IL 70053

Phone: +5819954278378

Job: Construction Director

Hobby: Embroidery, Creative writing, Shopping, Driving, Stand-up comedy, Coffee roasting, Scrapbooking

Introduction: My name is Dr. Pierre Goyette, I am a enchanting, powerful, jolly, rich, graceful, colorful, zany person who loves writing and wants to share my knowledge and understanding with you.