<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:cc="http://cyber.law.harvard.edu/rss/creativeCommonsRssModule.html">
    <channel>
        <title><![CDATA[Stories by TipLink on Medium]]></title>
        <description><![CDATA[Stories by TipLink on Medium]]></description>
        <link>https://medium.com/@TipLink?source=rss-bdcda6eac2dc------2</link>
        <image>
            <url>https://cdn-images-1.medium.com/fit/c/150/150/1*YJCGNW8KwIs1QBnmdFDM6g.jpeg</url>
            <title>Stories by TipLink on Medium</title>
            <link>https://medium.com/@TipLink?source=rss-bdcda6eac2dc------2</link>
        </image>
        <generator>Medium</generator>
        <lastBuildDate>Tue, 07 Apr 2026 20:25:41 GMT</lastBuildDate>
        <atom:link href="https://medium.com/@TipLink/feed" rel="self" type="application/rss+xml"/>
        <webMaster><![CDATA[yourfriends@medium.com]]></webMaster>
        <atom:link href="http://medium.superfeedr.com" rel="hub"/>
        <item>
            <title><![CDATA[How to mint Metaplex Compressed NFTs on Solana]]></title>
            <link>https://medium.com/@TipLink/how-to-mint-metaplex-compressed-nfts-on-solana-9256aa6ea022?source=rss-bdcda6eac2dc------2</link>
            <guid isPermaLink="false">https://medium.com/p/9256aa6ea022</guid>
            <category><![CDATA[crypto]]></category>
            <category><![CDATA[solana-network]]></category>
            <category><![CDATA[cryptocurrency]]></category>
            <category><![CDATA[nft]]></category>
            <category><![CDATA[blockchain]]></category>
            <dc:creator><![CDATA[TipLink]]></dc:creator>
            <pubDate>Thu, 25 May 2023 15:59:28 GMT</pubDate>
            <atom:updated>2023-05-29T18:02:26.903Z</atom:updated>
            <content:encoded><![CDATA[<p>This technical tutorial will guide you through minting compressed NFTs on the Solana blockchain using the Metaplex protocol and TipLink.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*UdJ2ga4TKL9v2xns7yOh-Q.png" /></figure><h3>Prerequisites</h3><ul><li>Yarn</li><li>TypeScript</li><li>NodeJS</li><li>~0.05 SOL to pay the required fee’s</li><li>Solana RPC Endpoint</li></ul><p>NFTs require their image and JSON metadata files to be hosted. We recommend using a decentralized storage provider such as <a href="https://docs.shadow.cloud/build/shadow-drive">Shadow Drive</a> (<a href="https://www.shadow.storage/spaces#features">UI for small-scale hosting</a>). We will provide a couple of examples, but the following will be needed for your own unique NFTs:</p><ul><li>URI for the hosted collection image</li><li>URI for the hosted NFT images</li><li>URI containing the JSON metadata for the collection</li><li>URI containing the JSON metadata for NFT</li><li>Inside the exampleNftJson folder is an example of the NFTs JSON metadata we have hosted on Shadow Drive</li></ul><h3>How to mint Metaplex Compressed NFTs on Solana</h3><blockquote><em>On Solana, </em><a href="https://edge.docs.solana.com/learn/state-compression"><em>State Compression</em></a><em> is the method of creating a “fingerprint” (or hash) of off-chain data and storing this fingerprint on-chain for secure verification. Effectively using the security of the Solana ledger to securely validate off-chain data, verifying it has not been tampered with.</em></blockquote><blockquote><em>This method of “compression” allows Solana programs and dApps to use cheap blockchain </em><a href="https://edge.docs.solana.com/terminology#ledger"><em>ledger</em></a><em> space instead of the more expensive </em><a href="https://edge.docs.solana.com/terminology#account"><em>account</em></a><em> space to store data securely.</em></blockquote><blockquote><em>This is accomplished by using a special binary tree structure, known as a </em><a href="https://edge.docs.solana.com/learn/state-compression?ref=solana.ghost.io#what-is-a-concurrent-merkle-tree"><em>concurrent Merkle tree</em></a><em>, to create a hash of each piece of data (called a </em><em>leaf), hashing those together, and only storing this final hash on-chain. This method of “compression” allows Solana programs and dApps to use cheap blockchain </em><a href="https://edge.docs.solana.com/terminology#ledger"><em>ledger</em></a><em> space instead of the more expensive </em><a href="https://edge.docs.solana.com/terminology#account"><em>account</em></a><em> space to store data securely.</em></blockquote><blockquote><em>With this technology, compressed NFTs can be created on-chain similarly to before, but for a fraction of the cost as before. As a frame of reference of on-chain cost reduction, take a 1 million NFT collection:<br>1 million NFTs ~= 12,000 SOL (traditional NFTs)<br>1 million NFTs ~= 5 SOL (compressed)<br> — </em><a href="https://edge.docs.solana.com/learn/state-compression?ref=solana.ghost.io"><strong><em>Solana</em></strong><em> </em><strong><em>State Compression Docs</em></strong></a></blockquote><p>This technical tutorial will guide you through minting compressed NFTs on the Solana blockchain using the Metaplex protocol. We will modify and run two scripts:</p><ol><li>Creates a Merkle tree, and a collection<br>createCollectionAndMerkleTree.ts</li><li>Mint compressed NFTs to TipLinks<br>mintToTipLink.ts</li></ol><p>This guide adapts a handful of resources on compressed NFTs published by Metaplex and Solana Foundation. We cloned the official Solana Developers <a href="https://github.com/solana-developers/compressed-nfts/tree/master">GitHub repo</a> and modified it to create TipLinks.</p><ul><li><a href="https://www.youtube.com/watch?v=W4xm4kuXwQk">Spotlight: State Compression by Solana</a></li><li><a href="https://www.youtube.com/watch?v=LxhTxS9DexU">Compressed NFTs Live Github Walkthrough with Nick Frostbutter</a></li></ul><h3>Cloning the Repo</h3><p>We will clone an example repo to get the example up and running quickly. This GitHub repo is adapted from Solana Foundations <a href="https://github.com/solana-developers/compressed-nfts/?ref=solana.ghost.io#readme">Compression NFTs</a> example, allowing you to mint directly into TipLink URL wallets.</p><ol><li>Let’s start by cloning the repo. Run gh repo clone GoonTrades/compressed-nfts-TipLink-adapted in your CLI.</li><li>If you are using VSCode you can also click “Clone Git Repository” underneath “Start” and paste in this URL: <a href="https://github.com/GoonTrades/compressed-nfts-TipLink-adapted.git">https://github.com/GoonTrades/compressed-nfts-TipLink-adapted.git</a></li><li>Install the packages using yarn install</li><li>Run yarn demo ./scripts/createWallet.ts to initialize a wallet and store the private key in the .local_keys file</li><li>Send 0.05 SOL to the wallet to create the Merkle tree, and have some leftover SOL to fund the TipLinks</li><li>Rename the example.env file to .env <strong>(Make sure you do this, or you will publicly share your keys + the script will fail)</strong></li><li>Set RPC_URL=”your_helius_api_key”<br>You can get a free Helius API key <a href="https://www.helius.dev/">here</a></li></ol><p>The main folder we will work out of is the scripts folder. It utilizes the two files createCollectionAndMerkleTree.ts and mintToTipLinks.ts.</p><p>We will create the collection and Merkle tree via the first script. Then we will mint the NFTs into individual TipLinks, using the collection and Merkle tree we created.</p><p><strong>Note</strong>: Run these scripts in order! The CreateCollectionAndMerkleTree.ts saves data to a .local_keys folder within this repo for use by the other scripts.</p><h3>Creating the Collection and Merkle Tree</h3><ol><li>Open createCollectionAndMerkleTree.ts and view the size of your Merkle tree size.</li></ol><p>Three values to configure your tree, each serving a very specific purpose:</p><ol><li>maxDepth - used to determine how many NFTs we can have in the tree</li><li>maxBufferSize - used to determine how many updates to your tree are possible in the same block</li><li>canopyDepth - used to store a portion of the proof on the chain, and as such, is a large factor of cost and composability of your compressed NFT collection</li></ol><p>To keep things simple and cheap, for this tutorial we have a maxDepth: 3, and a const canopyDepth = maxDepthSizePair.maxDepth - 3. This creates a Merkle tree for eight compressed NFTs.</p><p>The parameters below size your tree between 16,384 to 1,058,576 NFTs per tree. A great tool to help size your Merkle tree is <a href="https://compressed.app/">Compressed.app</a>. Feel free to read more about the details on <a href="https://edge.docs.solana.com/learn/state-compression">State Compression</a>, including <a href="https://edge.docs.solana.com/learn/state-compression#sizing-a-concurrent-merkle-tree">how to size a tree</a> and potential composability concerns.</p><pre>const maxDepthSizePair: ValidDepthSizePair = {<br>     // max=8 nodes<br>     maxDepth: 3,<br>     maxBufferSize: 8,<br> <br>     // max=16,384 nodes<br>     // maxDepth: 14,<br>     // maxBufferSize: 64,<br> <br>     // max=131,072 nodes<br>     // maxDepth: 17,<br>     // maxBufferSize: 64,<br> <br>     // max=1,048,576 nodes<br>     // maxDepth: 20,<br>     // maxBufferSize: 256,<br> <br>     // max=1,073,741,824 nodes<br>     // maxDepth: 30,<br>     // maxBufferSize: 2048,<br>   };<br>   const canopyDepth = maxDepthSizePair.maxDepth - 3;</pre><ol><li>Inside createCollectionAndMerkleTree.ts find the collectionMetadataV3 constant and pass your NFT collection details. Specifically the name, symbol, and metadata uri.</li><li>We have placeholder data here, so if you just want to run the example, there is no need to change anything.</li></ol><pre>// define the metadata to be used for creating the NFT collection<br>const collectionMetadataV3: CreateMetadataAccountArgsV3 = {<br> data: {<br>   name: &quot;Testing Compression&quot;,<br>   symbol: &quot;TESTooor&quot;,<br>   // specific json metadata for the collection<br>   uri: &quot;&lt;https://shdw-drive.genesysgo.net/91uEGv2pFyc3nZPgya6L41FKaoD6GoTcGDHqhokHe7Hw/metaURI.json&gt;&quot;,<br>   sellerFeeBasisPoints: 100,<br>   creators: [<br>     {<br>       address: payer.publicKey,<br>       verified: false,<br>       share: 100,<br>     },<br>   ], // or set to `null`<br>   collection: null,<br>   uses: null,<br> },<br> isMutable: false,<br> collectionDetails: null,<br>};chat</pre><p>Then go ahead and run the Script!</p><pre>yarn demo ./scripts/createCollectionAndMerkleTree.ts</pre><p>You have created a new Merkle tree and collection. As mentioned, the script saved the relevant data from creating the collection and tree to a .local_keys file. This data will be used in the mintToTipLinks.ts script, where we will continue this tutorial and mint the compressed NFTs into TipLinks.</p><pre>{<br> &quot;userAddress&quot;:&quot;BminWtwak7FjdAbKiDGe151GvXcAM8oApMeNf6PiM79F&quot;,<br> &quot;treeAddress&quot;:&quot;9BA2PaYCZi2KeapK7MycnbS8CMTpm95xJ4bdWoceQws3&quot;,<br> &quot;treeAuthority&quot;:&quot;4kxKUtrAhfHAYmXggVgA4cCBt7yvT4cwG5d8G3SfvSnH&quot;,<br> &quot;collectionMint&quot;:&quot;5PBzz2WRv6w756uy9TeXCB7gGSKsyn11qw9ZUcNvGVrB&quot;,<br> &quot;collectionMetadataAccount&quot;:&quot;9pigtefJdPF3E85p3P3YAfpTz3nexbGX9AXC8TrP7R5f&quot;,<br> &quot;collectionMasterEditionAccount&quot;:&quot;2KpicaKU4K1YSWyu4bLZ3kCrgeoHk6dNMJDiYLMWGTXL&quot;<br>}</pre><h3>Mint Compressed NFTs to TipLink URL Wallets</h3><p>Now we can move to the second script. This creates a TipLink, funds it with some SOL, and mints a compressed NFT into the wallet.</p><p>This is where having your JSON metadata URIs is key. To use different art or traits, you must generate this JSON data and host it somewhere, such as Shadow Drive or IPFS. For brevity, we will just be using placeholder NFT metadata.</p><ol><li>Navigate to the onChainNftMetadata folder and the onChainNFTs.ts file. This is where we will input metadata for the individual NFT to be minted.</li></ol><p>The key pieces of our NFT’s metadata to note are:</p><ul><li>name - this is the actual name of our NFT that will be displayed in wallets and on explorers</li><li>symbol - the shorthand symbol that represents the asset</li><li>uri - this is the <a href="https://docs.metaplex.com/programs/token-metadata/overview#a-json-standard">JSON metadata</a> that defines the NFT based on the Metaplex <a href="https://docs.metaplex.com/programs/token-metadata/">Token Metadata program</a></li></ul><p>We have populated the onChainNFTs.ts file with two example NFTs, including the hosted JSON metadata in the uri field - so there is no need to modify this until you want to mint your own NFTs.</p><pre>export const nftMetadatas: NFTMetadata[] = [<br>  {<br>    name: &quot;Compressed NFT 1&quot;,<br>    //This is example JSON metadata for the NFTs<br>    uri: &quot;&lt;https://shdw-drive.genesysgo.net/91uEGv2pFyc3nZPgya6L41FKaoD6GoTcGDHqhokHe7Hw/Frame%205%20(3).png&gt;&quot;,<br>    symbol: &quot;Testy Test&quot;<br>  },</pre><p>Finally, we will install and import the TipLink API and add the function to create the TipLink inside mintToTipLink.ts.</p><ol><li>Install the package by running the following command on the command line:</li></ol><pre>yarn add @tiplink/api</pre><p>2. Then, at the top of the mintToTipLink.ts file, add:</p><pre>import { TipLink } from &quot;@tiplink/api&quot;;</pre><p>3. Add the function to create a TipLink inside the body of the pre-definedcreateAndFundTiplink function:</p><pre>const tipLink = await TipLink.create();</pre><p>4. Update the value of tipLinkPubKey as follows, and log the link afterward:</p><pre>const tipLinkPubKey = tipLink.keypair.publicKey;<br>console.log(`Here is one of your TipLinks: ${tipLink.url.href}`);</pre><p>The function should look like this when you’re done:</p><pre>const createAndFundTiplink = async (<br>  connection: WrapperConnection,<br>  payer: Keypair,<br>  treeAddress: PublicKey,<br>  collectionMint: PublicKey,<br>  collectionMetadataAccount: PublicKey,<br>  collectionMasterEditionAccount: PublicKey,<br>  nftMetadata: NFTMetadata<br>) =&gt; {  <br>	//add the TipLink.create function and assign it to tipLink<br>	const tipLink = await TipLink.create();<br><br>        //then using tipLink.keypair.publicKey we can pass the address into transaction  <br>        const tipLinkPubKey = tipLink.keypair.publicKey;<br><br>        //this logs out the URL for the TipLink wallet<br>        console.log(` Here is one of your TipLinks: ${tipLink.url.href}`);</pre><p>Now we can run the script to mint the two NFTs into TipLinks. The TipLink URLs will be stored in outputTipLink.csv.</p><pre>yarn demo ./scripts/mintToTipLink.ts</pre><h3>Conclusion</h3><p>This tutorial has demonstrated how to mint compressed NFTs on Solana using the Metaplex protocol. The purpose of this guide is to serve as a stepping stone to distributing NFTs at scale.</p><p>Some key pieces need to be included, such as <a href="https://learn.figment.io/tutorials/generative-nfts-on-solana-with-candy-machine-v2-and-hashlips">generating the NFT images and metadata</a>, storing the TipLink URLs, and creating multiple Merkle trees per collection. In this guide, we only minted one tree, but it is important to note that an NFT collection can have multiple Merkle trees.</p><p>Feel free to contact us in <a href="https://discord.gg/B3eSYNXY">Discord</a> if you have questions or need help minting compressed NFTs into a TipLink. Special shoutout to all the people who worked on compression. Specifically the <a href="https://twitter.com/metaplex">Metaplex</a> team, <a href="https://twitter.com/SolanaFndn">Solana Foundation</a>, and <a href="https://twitter.com/heliuslabs">Helius</a>.</p><p>We are excited to see what this tech enables at scale!</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=9256aa6ea022" width="1" height="1" alt="">]]></content:encoded>
        </item>
        <item>
            <title><![CDATA[TipLink raises $6m, co-led by Sequoia and Multicoin, to unlock the ultimate distribution mechanism…]]></title>
            <link>https://medium.com/@TipLink/tiplink-raises-6m-co-led-by-sequoia-and-multicoin-to-unlock-the-ultimate-distribution-mechanism-b403aa69634f?source=rss-bdcda6eac2dc------2</link>
            <guid isPermaLink="false">https://medium.com/p/b403aa69634f</guid>
            <category><![CDATA[crypto]]></category>
            <category><![CDATA[startup]]></category>
            <category><![CDATA[payments]]></category>
            <category><![CDATA[cryptocurrency]]></category>
            <category><![CDATA[tech]]></category>
            <dc:creator><![CDATA[TipLink]]></dc:creator>
            <pubDate>Tue, 21 Feb 2023 15:00:32 GMT</pubDate>
            <atom:updated>2023-02-21T15:00:32.169Z</atom:updated>
            <content:encoded><![CDATA[<h3><strong>TipLink raises $6m, co-led by Sequoia and Multicoin, to unlock the ultimate distribution mechanism to send crypto &amp; NFTs</strong></h3><p>TLDR: We raised $6m, launched our <a href="https://docs.tiplink.io/">API</a> to send crypto + NFTs with a link, and <a href="https://jobs.lever.co/TipLink">we are hiring</a>!</p><p>We are thrilled to announce that we have raised $6m in seed funding led by Sequoia Capital and Multicoin Capital. <a href="https://tiplink.io">TipLink </a>allows users to send crypto or NFTs with just a link. The kicker is… the link is a wallet! We are building one of the most important distribution mechanisms in crypto, and this capital will help us bring TipLink to the masses.</p><figure><img alt="" src="https://cdn-images-1.medium.com/max/1024/1*pMCvTmh4AZOyTRwCjIMNiw.png" /></figure><p><strong><em>Meet our other fantastic investors</em></strong></p><p>Aside from Sequoia and Multicoin Capital, we couldn’t be more excited by the rest of our backers. This includes: Asymmetric, Big Brain Ventures, Circle Ventures, Karatage, Monke Ventures, Paxos, and Solana Ventures. We also are backed by well-known angels Vinny Lingham, Liu Jiang, and Sarah Guo.</p><p><strong><em>There is a gap in crypto payments</em></strong></p><p>If we take a step back from the crypto world and consider the larger world of payments, there are several challenges consumers are facing today. As an example, if Alice wants to send Bob $10 on the internet, there are several challenges she will run into.</p><ol><li>She needs a coincidence of technologies, meaning that Alice and Bob both need the same application, like PayPal for example.</li><li>If they both use PayPal, Alice still needs to ask Bob for his information.</li><li>Even in crypto, Alice needs to ask Bob if he has a wallet and, if he does, have a back-and-forth exchange to get his public key.</li></ol><p>The only version where people don’t need to worry about the above 3 is cash. When Alice hands Bob cash, she doesn’t have to worry whether they use the same apps or ask for each other’s usernames; she just hands over the cash. <strong>There should be a way to digitally move around assets like cash, but for the internet.</strong></p><p><strong><em>Introducing TipLink</em></strong></p><p>With TipLink, users can send crypto or NFTs with just a link. The link itself is the wallet, meaning the user receiving doesn’t need to know anything about crypto. The user can then withdraw the assets to</p><ol><li>A wallet they already have.</li><li>Over time directly to financial institutions they are familiar with.</li><li>If they’ve never set up a crypto wallet, they can log in with Google and have a lightweight non-custodial wallet in seconds.</li></ol><p>The implications for this new distribution mechanism are massive. Instead of sending digital assets to only people in the small crypto ecosystem, you can now send assets to anyone on the planet with an internet connection.</p><p>Today, you can send crypto and NFTs to anyone with just a link. Want to send someone without a wallet crypto or NFTs? Use TipLink. Want to do a giveaway and give crypto without asking for people’s public keys? Just send a TipLink. Want to give out tokens at an event with just a QR code people need to scan? TipLink. Want to send money around the world with just a link? Send USDC with a TipLink. Blast out crypto/NFTs to an entire email distro; use TipLink. Almost every day, we hear about new ways people use our product. Sending digital assets should be easy, and people/companies should focus on what they send, not how it works.</p><p><strong><em>The TipLink API!</em></strong></p><p>We want to make sending TipLinks super simple for developers. Our <a href="https://docs.tiplink.io/">API </a>allows developers to create TipLinks for free and add any asset. This allows for setting up automated processes to send out digital assets and integrating creating/sending links directly into applications. Like Stripe helped create billion-dollar e-commerce businesses, TipLink can help create billion-dollar crypto companies. Now that TipLink exists, the early adopters in figuring out new use cases across IRL, social, marketing, payments, etc., will be rewarded.</p><p>Here is a quick example of how easy it is to make TipLinks with our API:</p><pre>import { Tiplink } from &#39;@tiplink/api&#39;;<br><br>Tiplink.create().then(tiplink =&gt; {<br> console.log(&quot;link: &quot;, tiplink.url.toString());<br> console.log(&quot;publicKey: &quot;, tiplink.keypair.publicKey.toBase58());<br> return tiplink;<br>});</pre><p><strong><em>We are hiring!</em></strong></p><p>If you’re interested in helping build the most important distribution mechanism in crypto, please apply here: <a href="https://jobs.lever.co/TipLink">https://jobs.lever.co/TipLink</a></p><p>Founders of TipLink,</p><p>Ian (<a href="http://twitter.com/ArbVision">@ArbVision</a>) &amp; Aashiq (<a href="http://twitter.com/aashiq">@aashiq</a>)</p><img src="https://medium.com/_/stat?event=post.clientViewed&referrerSource=full_rss&postId=b403aa69634f" width="1" height="1" alt="">]]></content:encoded>
        </item>
    </channel>
</rss>