Jump to content


  • Posts

  • Joined

  • Last visited


Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

RambeauTeasebox's Achievements

  1. @CuentosDeHada Great to see more experimentation! I'd suggest posting this on Reddit in r/XRP and r/Ripple. Bitrue lists CSC and several exchanges list SOLO... Any thoughts about reaching out to an exchange?
  2. @TaylorWarden I don't think you did anything "wrong," like in the moral/ethical sense. But you are using a U.S.-based domain name/website service provider (Namecheap) and Ripple has a trademark for the term "ripple" in the U.S., covering: So if you're using "ripple" for a case even somewhat related to the above, you've probably ran afoul of U.S. trademark law. Notice that the term "ripple" is trademarked by others and used for purposes unrelated to digital currency schemes. A card game, plant-based milk, handbags... Is Ripple being too zealous? Perhaps in your case, which seems pretty benign and in line with the grandfathered uses, but it's probably within their legal right. I don't know if a non-U.S. provider would respond differently or which other countries Ripple may have trademarks in, but it's something you could look into if you're set on using the name. https://tmsearch.uspto.gov/bin/gate.exe?f=doc&state=4809:kddgzu.4.9 https://tmsearch.uspto.gov/bin/showfield?f=toc&state=4809%3Akddgzu.4.9&p_search=searchss&p_L=50&BackReference=&p_plural=yes&p_s_PARA1=&p_tagrepl~%3A=PARA1%24LD&expr=PARA1+AND+PARA2&p_s_PARA2=ripple&p_tagrepl~%3A=PARA2%24COMB&p_op_ALL=ADJ&a_default=search&a_search=Submit+Query&a_search=Submit+Query (I'm not a lawyer and this is not legal advice, just my personal opinion.)
  3. https://www.sologenic.com/ https://www.sologenic.org/
  4. Many thanks for your excellent summaries and comments, @Pablo. Regarding the Jed piece of the picture, I agree with your take. But I do think there is one important thing to consider when asking why Jed has not been named as a defendant, which is that, while he was granted a very large amount of XRP as a founder and took possession of it while associated with Ripple, at most a very small percentage of sales and an even smaller percentage of dollar value exchange could have been executed while Jed had decision-making power at Ripple and was privy to any new inside information. Whether or not Jed provided information to the SEC, the fact that probably >99.9% of Jed's USD/XRP exchanges -- as a third party/on the secondary market -- and the great deal of Ripple's sales took place after he left the company. This may be more than enough for the SEC to ignore any role or sales before his departure and "xrp sales incoming." Though Jed may or may not have a role in this lawsuit, I do think that this case could be bad news for Jed (and others) in the long run. If this case opens up even the possibility of suits brought by the SEC or third parties, Stellar, the Ethereum Foundation, and any other cryptocurrency organizations and their founders and executives who participated in ICOs or token sales touching the U.S. market will be targets.
  5. Not to mention public (perhaps pseudonymous, in the case of NFTs) recognition of purchase. There's value in just being named as the owner of a big-ticket item. And lots of people are big on conspicuous, aspirational consumption...
  6. @brianwalden You are on to something with all of your examples. Titles, escrow, licensing, financing, insurance... Not to mention actually selling/marketing something. All of it potentially comes with much less friction when dealing with something like a car. I'd say, think bigger: real estate. There is your $200T world-wide market that could be totally upended with application of NFTs. You bring up video games, which has some obvious applications for tokenizing characters, objects, prizes and the like. I'd like to push back on the art or music NFT markets as being boring. I know what you mean, but NFTs applied to these markets are actually really exciting for both fans and artists because NFTs provide some really important (and, from a different perspective, exciting) qualities to art that have been really difficult or impossible to do. There are a few things that NFTs offer to both the buy and sell side: 1. Uniqueness/limited production: Verification of production or genesis -- a huge part of the value of a thing 2. Provenance tracking: Verification of who has owned what, when, for how long and for how much, which is the other huge part of the value of the thing 3. Direct interaction and financial support: sell directly to superfans, who will pay more to get a more intimate or unique experience or thing, while directly supporting an artist that means something to them -- another big value component 4. Lifetime royalties of resale/reuse with no/limited middlemen I'd say that #1 above is actually the least important and least exciting (from the artist/fan perspective) because there are decent ways to do this already. #2 is very, very important for fine (visual) art, but could be for other arts or antiques as well. #3 is important for both the buyer and seller and (at least potentially) cuts out the middleman. And #4 may not be exciting from the consumer side, but it and #3 are what will get so many smaller-time artists on board, who are trying to make a living selling to small but potentially really dedicated and supportive fans. Maybe being the verified owner of something "unique" that is widely copied and loved could bring more value to the "real" thing? Just a different idea of value that could emerge from this.
  7. Standardization discussion here: https://github.com/XRPLF/XRPL-Standards/discussions/30 Lots of discussion and links here: I've tried starting threads on both the Ripple and XRP Reddit subs, but unfortunately I think I've been shadowbanned from both channels for who-knows-what.
  8. Yes, essentially. I think another variation for issuing would be for the hot/warm distributing wallet to be "permanent." Every time a new set of NFTs needs to be issued, a new issuing wallet can be created, the distributing wallet extends trust to that wallet for the new NFTs, and then NFTs will be issued to this hot/warm distributing wallet before blackholing. Third parties can deal with the same, known distributing wallet while still guaranteeing that a certain vintage of NFTs cannot be created again. I think you're spot-on about the provenance. I think that when it comes to art and art-like NFTs, verifiable provenance will be as important or even more important to NFT value than uniqueness. (Though I'm not sure that they're really separate properties.)
  9. I've repeated this experiment using @Wietse @WietseWind's NFT proposal here: https://github.com/XRPLF/XRPL-Standards/discussions/30 This attempt is different in a few ways from my first. Namely: 1. It uses the correct minimum amount to issue the token, i.e. 1000000000000000e-96 (== 1e-81 == 0.000000000000000000000000000000000000000000000000000000000000000000000000000000001) instead of 1e-15 which I was mistaken about. So now we actually have a single, indivisible token unit being issued. (Telling rippled to use less than this absolute value amount is equivalent to 0.) 2. Instead of pointing to the NFT object in the Payment Memo field during the issuance transaction, I use the Domain field during the AccountSet transaction. When viewing the Issuer's Domain, you now see an IPFS pointer to the simple metadata file for the object. This metadata points to the NFT object of interest. With one pointer, you can potentially issue many NFTs from this account at once by pointing to multiple objects in the metadata, including other metadata files, and using unique currency codes for each unique NFT or NFT set. 3. I transacted in the order suggested by the proposal. Accounts: Issuer: rHgT5R6brH6pK6JJfoo4F7wqFmXwGUh7Ke (https://test.bithomp.com/explorer/rHgT5R6brH6pK6JJfoo4F7wqFmXwGUh7Ke) Distributor: rHZZ3QAedovwfq9stGKYGWsKkxNisKR9Hi (https://test.bithomp.com/explorer/rHZZ3QAedovwfq9stGKYGWsKkxNisKR9Hi) Purchaser: rPLJzvrX5JQtFdhELUH5kxsY2CiQkxd1x (https://test.bithomp.com/explorer/rPLJzvrX5JQtFdhELUH5kxsY2CiQkxd1x) IPFS objects: NFT object IPFS pointer: QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL (https://ipfs.io/ipfs/QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL) NFT metadata IPFS pointer: Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD (https://ipfs.io/ipfs/Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD) Currency (Nonstandard) Code: $ echo "QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL" | sha1sum 212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3 - Issuer "Domain": "ipfs://Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD" in HEX: "697066733a2f2f516d636336696746776b5373346a4b7947424e455839565471553353793758366270433342445743756531656a44" Transactions: Set DefaultRipple on issuing account (P2P sending without Trustlines) AND Set Domain field pointing to IPFS object (here, object's metadata): TXID: A7A99DFEB4485AEAC6222CB7626E547CC46A9BCDF464CABF37A82DA7158B0626 (https://test.bithomp.com/explorer/A7A99DFEB4485AEAC6222CB7626E547CC46A9BCDF464CABF37A82DA7158B0626) Distributor Trusts Issuer for minimal currency amount (1000000000000000e-96): TXID: 108A22B80BEFC46D5874714C6492F4AA63F61C4141D4B687A88EB08825897740 (https://test.bithomp.com/explorer/108A22B80BEFC46D5874714C6492F4AA63F61C4141D4B687A88EB08825897740) Create NFT asset and send to Distributor account (1000000000000000e-96 unit of currency): TXID: F623823986EA16099D4A3DFD66357893181C1E604FBF8DD2CABF61CC46023C02 (https://test.bithomp.com/explorer/F623823986EA16099D4A3DFD66357893181C1E604FBF8DD2CABF61CC46023C02) Remove ability to issue more of the NFT: Set RegularKey to Blackhole account: TXID: 0D089A27613036DD9884E37C6BBA8699C6B3350E22CE3FFE986244F241C5C526 (https://test.bithomp.com/explorer/0D089A27613036DD9884E37C6BBA8699C6B3350E22CE3FFE986244F241C5C526) Remove use of MasterKey for the issuing account: TXID: 528ED64DAE7A2523F8B0A1A61A5735B7C9CF229BDFF794EE2CD835509E217B9E (https://test.bithomp.com/explorer/528ED64DAE7A2523F8B0A1A61A5735B7C9CF229BDFF794EE2CD835509E217B9E) Distributor account offers NFT for sale (against XRP): TXID: CF5B676C228B9049D7C5C3E5A547255166900FC56C861B45EFBBDCA6EEAA503F (https://test.bithomp.com/explorer/CF5B676C228B9049D7C5C3E5A547255166900FC56C861B45EFBBDCA6EEAA503F) Purchaser account buys NFT with XRP: TXID: B10D29248CCDC4F16AF2B99F878CD073E45014048AB64F032315E44CB2F4FC3B (https://test.bithomp.com/explorer/B10D29248CCDC4F16AF2B99F878CD073E45014048AB64F032315E44CB2F4FC3B)
  10. Thanks for the link; I'll be joining that discussion. I does look like I used the incorrect issuance amount, as I noted. I'm still a bit confused over the 1e-15 vs. 1000000000000000e-96, so hopefully @Wietse@WietseWind and the github discussion can clear things up for me.
  11. Thanks! I'm going to try to create some on mainnet when I get a chance later this week. Reading this over again, one change I'd make is to format the Memo data as JSON so that it's easily readable/usable. Instead of: NFT object IPFS hash: QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL NFT metadata IPFS hash: Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD Perhaps something like this: { "NFT": { "Data Network": "IPFS", "Pointers": { "Object_1": "QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL", "Metadata_1": "Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD" } } } Or maybe doing whatever is standard for ERC-271 contracts or some of the larger NFT platforms like Rarible or OpenSea. I haven't looked into this yet.
  12. I've been interested in NFTs since first hearing about CryptoKitties a few years ago and I starting thinking about how to issue NFTs on XRPL after @KarmaCoverage posed the question last week. I worked out a scheme to do so this past Friday. Unfortunately, it looks like I got scooped by the above group, though I don't know where their methods have been published (if they have been). Based on their short video introduction, it also appears that they're using some kind of private database for handling asset storage.(?) So I'm going to post how I created an NFT with the XRPL Testnet and IPFS. I've done this twice now and here I'll use my latest attempt (from earlier today). As a disclaimer, despite using the XRPL for a long time, I don't consider myself an expert. There may be better or just different ways of issuing NFTs. There also may be mistakes or wrong assumptions here. Corrections, criticism and alternatives will be much appreciated. Also, while issuing NFTs on the XRPL is definitely possible, the ledger is inflexible compared to Ethereum or another platform that directly interfaces with smart contracts. Perhaps future smart contract platforms that can hook into the XRPL for consensus (coming soon!?) will be better suited to the purposes of issuing NFTs. And this NFT, in particular, will disappear whenever the XRPL Testnet is reset, despite the IPFS object persisting. OK, on to my NFT guide. First, I'll talk about accounts, assets and the structure of the NFT issuance. Second, I'll show the JSON data payloads and walk through the transactions for issuing and purchasing the NFT. Assets: To store the assets that are represented by the NFT, I'm using IPFS (https://ipfs.io/ & https://en.wikipedia.org/wiki/InterPlanetary_File_System). This (hopefully) assures that the assets will be accessible by anyone and never disappear. To link to the asset on IPFS, I'll use the IPFS hash digest of the asset, which is a verifiable representation of the asset and points to it on the IPFS network. First, the object that we want to be represented by the NFT on XRPL: QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL (https://ipfs.io/ipfs/QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL) I think this "trading card" may look familiar to some of you... Second, another IPFS object that is metadata for the NFT object: Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD (https://ipfs.io/ipfs/Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD) The NFT will reference these IPFS hash digests. (Note: I could just have the NFT point to the metadata, which itself points to the object of interest.) Now, in another example, this asset could be another image/"trading card" as above, but could also be a video, a written work, a snippet of code that is used as an in-game asset, a real estate deed... Anything, really. Of course, how a given asset is used, managed and verified outside of the ledger is another thing. XRPL Accounts: There are three accounts that I'll use on the XRPL Testnet for this example: Issuer: rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb (https://test.bithomp.com/explorer/rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb) Distributor: rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa (https://test.bithomp.com/explorer/rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa) Purchaser: rfWgknJfidjEmeAvJMZpTnj6WtVjDQjNhf (https://test.bithomp.com/explorer/rfWgknJfidjEmeAvJMZpTnj6WtVjDQjNhf) The Issuer will create and send the NFT to the Distributor via the Distributor's trustline. The Issuer will create a single NFT referencing a single asset*. When the Issuer is finished creating the NFT, it will then "blackhole" itself to make further NFT issuance impossible. The Distributor now holds the NFT and will create an offer to sell it on the XRPL DEX. The Purchaser will then offer to buy it, and when the offers match, the Purchaser will exchange XRP for the NFT**. * Here, the NFT will actually reference two IPFS assets: The image asset and its metadata asset. As noted above, maybe it's better to just point to the metadata, which points to the image asset. ** Of course, once created, the Purchaser could book an offer first. In an auction, multiple potential purchasers of an NFT could post offers, and at a certain time, the Distributor could decide to take the best offer. The NFT: How does one issue an NFT on the XRPL? Well, I just issued the smallest possible amount of a currency, giving it a unique name and linking it to the IPFS asset hash digests using a data storage field in the ledger object. This single currency unit that references a verifiable representation of the asset is our NFT. To create an indivisible NFT unit, I issued 1e-15 unit of currency (0.000 000 000 000 001), which is the smallest amount that can be issued***. XRPL precision is maintained with integers, so this is a single integer unit of issued currency. (https://xrpl.org/currency-formats.html#issued-currency-precision) *** I'm a bit confused about the precision versus the minimum nonzero absolute value but haven't looked into it yet. I think 1e-15 is the correct amount to use and don't believe I could issue less, though I haven't tried. (https://xrpl.org/currency-formats.html#comparison) Issued currencies can be named with standard ISO-4217 currency codes or non-standard 160-bit (40 HEX characters) codes. To give the NFT a unique name, I used the SHA1 digest of the image's IPFS pointer****, which is conveniently 160 bits: $ echo "QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL" | sha1sum 212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3 - So, I'll use "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3" as a unique currency code for the NFT. **** You could use something more readable, such as the HEX value of a 20-character ASCII descriptor, especially when issuing multiple NFTs for a single asset. For example, if we wanted to issue 5 NFTs for this "trading card" and this was card #2 of 5, this could be the HEX value of "JoelKatzIcon.jSL#2/5" or a digest of it or something similar. Finally, to link our NFT to a verifiable IPFS asset, I used the Memo field (https://xrpl.org/transaction-common-fields.html#memos-field) to store the IPFS pointers of our asset and its metadata. Translating the ASCII to HEX for a MemoData string: " NFT object IPFS hash: QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL NFT metadata IPFS hash: Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD " >>> "4e4654206f626a656374204950465320686173683a0a516d55376a5939706e78666d7a4c526a68533837577a56784a654c557a3252684d34334a6d743973536f316a534c0a4e4654206d65746164617461204950465320686173683a0a516d636336696746776b5373346a4b7947424e455839565471553353793758366270433342445743756531656a44" There are some other fields that could be used to store metadata with XRPL objects, such as the Domain, Email and MessageKey fields for the Issuer and Distributor accounts. But for now I'll just use the Currency Code and Memos fields to reference the asset. Before moving on to the JSON payloads and XRPL transactions, a final note about our NFT asset. While the NFT will reference the image and a separate metadata text file, metadata could be included in the original file. For example, for this image, one might want to include certain data in its Exif metadata. Also, a message with the asset's metadata, singed with a known public key of the image's creator or agent that shows pre-NFT provenance or confirms and licenses NFT creation could be useful. Transactions: OK, now that the data and structure of the NFT have been established, I'll move on to the actual NFT creation on XRPL. Remember, I'm just issuing one indivisible currency unit with some data attached to its issuing transaction that references a verifiable IPFS object. For another example of XRPL issuance, see the overview here: https://www.jonhq.com/how-to-run-an-ico-on-the-ripple-consensus-ledger/ NOTE: I'm going to use an online rippled instance to sign the transactions so that I don't have to add Fee or Sequence fields to the transactions, and will then submit the transaction blobs to verify the transactions. Doing the transactions in a secure, offline manner will require modified JSON payloads and rippled commands. Before the NFT is issued, the Distributor account must trust the Issuer account so that the Issuer can send its issued currency to the Distributor. This trust is for the smallest currency unit: { "TransactionType": "TrustSet", "Account": "rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa", // Distributor account "LimitAmount": { "currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", // The non-standard currency code -- the SHA1 digest of the IPFS pointer "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", // Issuer account "value": "1e-15" // Minimum unit for issued currency precision } } $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"TransactionType": "TrustSet", "Account": "rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa", "LimitAmount": {"currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15"} }' Tx hash: 0FA103CC0C2C2149521C3435D25BB7268D0DE872F92BD262B9554FB36E0F585F (https://test.bithomp.com/explorer/0FA103CC0C2C2149521C3435D25BB7268D0DE872F92BD262B9554FB36E0F585F) Next, the Issuer is going to actually create a unit of currency by sending it to the Distributor account: { "TransactionType": "Payment", "Account": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", // Issuer account "Destination": "rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa", // Distributor account "Memos": [ { "Memo": { "MemoData": "4e4654206f626a656374204950465320686173683a0a516d55376a5939706e78666d7a4c526a68533837577a56784a654c557a3252684d34334a6d743973536f316a534c0a4e4654206d65746164617461204950465320686173683a0a516d636336696746776b5373346a4b7947424e455839565471553353793758366270433342445743756531656a44" // IPFS asset pointers in HEX } } ], "Amount": { "currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15" } } $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"TransactionType": "Payment", "Account": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "Destination": "rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa", "Memos": [ { "Memo": { "MemoData": "4e4654206f626a656374204950465320686173683a0a516d55376a5939706e78666d7a4c526a68533837577a56784a654c557a3252684d34334a6d743973536f316a534c0a4e4654206d65746164617461204950465320686173683a0a516d636336696746776b5373346a4b7947424e455839565471553353793758366270433342445743756531656a44"}}], "Amount": { "currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15" } }' Tx hash: 9CCCC8A04BCCA16264AE0E32BA2636B62BD723B54C39C9D4AE18286A69FA9564 (https://test.bithomp.com/explorer/9CCCC8A04BCCA16264AE0E32BA2636B62BD723B54C39C9D4AE18286A69FA9564) The NFT has been created! Importantly, the MemoData field refers to the IPFS asset -- the link between our NFT token and the valued object. Referring to the NFT issuance shows our asset pointer data. The Distributor account can now do with it what it wants. First, though, let's make sure the NFT can be more easily sent by accounts without trustlines and make sure the Issuer cannot create more units of currency: Set DefaultRipple on issuing account (P2P sending without Trustlines): $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"TransactionType": "AccountSet","Account" : "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb","SetFlag": 8}' Tx hash: 6A0FAC075F80AF1356C5CE82E35D30840ADAAA2E1D5CCC0CC2771E79B8251BCF (https://test.bithomp.com/explorer/6A0FAC075F80AF1356C5CE82E35D30840ADAAA2E1D5CCC0CC2771E79B8251BCF) See: https://xrpl.org/rippling.html#the-default-ripple-flag Remove ability to issue more of the NFT: Set RegularKey to Blackhole account: $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"Flags": 0, "TransactionType": "SetRegularKey", "Account": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "RegularKey": "rrrrrrrrrrrrrrrrrrrrBZbvji"}' Tx hash: 01DADA8FFACDCB898743A0276FD91AC55D344599D480C0401A9B94B92780B66B (https://test.bithomp.com/explorer/01DADA8FFACDCB898743A0276FD91AC55D344599D480C0401A9B94B92780B66B) See: https://xrpl.org/accounts.html#special-addresses Remove use of MasterKey for the issuing account: $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"TransactionType": "AccountSet","Account" : "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "SetFlag": 4}' Tx hash: 9B4275B3E1B3641255CA73E41FF3DCB20A552A1989400444865D31E85E84AC15 (https://test.bithomp.com/explorer/9B4275B3E1B3641255CA73E41FF3DCB20A552A1989400444865D31E85E84AC15) See: https://xrpl.org/disable-master-key-pair.html#disable-master-key-pair Our Issuing account is now toast -- along with any XRP stuck in it. If you'd do this for real, you'd want to remove all but the minimum reserve of XRP and other assets before blackholing it. To not waste more than the necessary XRP, you'd probably want to issue a batch of NFTs from one account before going through this process. But we've destroyed the ability to issue more units of any NFT this account has already issued and preserved their scarcity. Finally, I had the Distributor account sell the NFT to the Purchaser account: Distributor account offers NFT for sale (against XRP): { "TransactionType": "OfferCreate", "Account": "rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa", "TakerPays": "100000000", "TakerGets": { "currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15" } } $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"TransactionType": "OfferCreate", "Account": "rEfeRQwjJgEAgQpHtKCRG7tsdSmv4yjqJa", "TakerPays": "100000000", "TakerGets": {"currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15"} }' Tx hash: 40A236443B4C62B83273E65F6D367E66DAC8B480B2B86A994D898C8F879D3BB7 (https://test.bithomp.com/explorer/40A236443B4C62B83273E65F6D367E66DAC8B480B2B86A994D898C8F879D3BB7) Purchaser account buys NFT for 100 XRP: { "TransactionType": "OfferCreate", "Account": "rfWgknJfidjEmeAvJMZpTnj6WtVjDQjNhf", "TakerGets": "100000000", "TakerPays": { "currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15" } } $ rippled sign sSECRETXXXXXXXXXXXXXXXXXXXXXX '{"TransactionType": "OfferCreate", "Account": "rfWgknJfidjEmeAvJMZpTnj6WtVjDQjNhf", "TakerGets": "100000000", "TakerPays": {"currency": "212e5fc6a2bbc0df22df1f1a83dfb6c6af5599a3", "issuer": "rPErcAVSGVXxX7iyCsp483tmG7CVzr7sxb", "value": "1e-15"} }' Tx hash: B97D6975B0FBF77FE49C3D795605B4475A5B2480E752E5048F958C3F33B527F4 (https://test.bithomp.com/explorer/B97D6975B0FBF77FE49C3D795605B4475A5B2480E752E5048F958C3F33B527F4) That's it! rfWgknJfidjEmeAvJMZpTnj6WtVjDQjNhf is the proud owner of my test NFT and the Distributor account has 100 more testnet XRP. When we look back at the issuing account tied to the NFT, we can see the following identity in the NFT issuing transaction (https://test.bithomp.com/explorer/9CCCC8A04BCCA16264AE0E32BA2636B62BD723B54C39C9D4AE18286A69FA9564) and go on to verify it with an IPFS node and see our "trading card": NFT object IPFS hash: QmU7jY9pnxfmzLRjhS87WzVxJeLUz2RhM43Jmt9sSo1jSL NFT metadata IPFS hash: Qmcc6igFwkSs4jKyGBNEX9VTqU3Sy7X6bpC3BDWCue1ejD As a final note, I learned that https://xumm.community/tokens offers a currency issuing tool. I haven't walked through the whole thing myself, but this may allow for issuance of NFTs (# tokens = 0.000 000 000 000 001) for the community without needing more technical tools if it lets you add Memo data to the issuing transaction. Looking forward to your comments and, hopefully, some NFTs!
  13. You mean their digital asset security? Calling the SEC... (They do have a U.S. subsidiary, after all.)
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.