<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>Artech.Club</title>
        <link>https://paragraph.com/@artechclub</link>
        <description>Hello world! Follow us for tips and insights on branding, marketing, and entrepreneurship. Join us in creating the future of Web3.</description>
        <lastBuildDate>Sat, 11 Apr 2026 15:43:36 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>Artech.Club</title>
            <url>https://storage.googleapis.com/papyrus_images/f931974d658beb895d9cf807d39b507bec3c0eb8315089263f1bee9e9bcb5d0c.png</url>
            <link>https://paragraph.com/@artechclub</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Generative Art: The Next High-Value Web3 Frontier]]></title>
            <link>https://paragraph.com/@artechclub/generative-art-the-next-high-value-web3-frontier</link>
            <guid>tEDAn9z0TDyWt0NGoXHE</guid>
            <pubDate>Sat, 26 Aug 2023 21:32:21 GMT</pubDate>
            <description><![CDATA[The rise of Web3 and AI has unlocked new possibilities for the generative art genre, from new artworks and art theories to increased financial viability. Learn more about generative art and our role in shaping its future in this article. The intersection of art and technology has been a fascinating space to study and draw inspiration from. Each new innovation results in the unlocking of new ways to express oneself in the world. The Web3 industry is no stranger to this progression, especially ...]]></description>
            <content:encoded><![CDATA[<p>The rise of Web3 and AI has unlocked new possibilities for the generative art genre, from new artworks and art theories to increased financial viability. Learn more about generative art and our role in shaping its future in this article.</p><p>The intersection of art and technology has been a fascinating space to study and draw inspiration from. Each new innovation results in the unlocking of new ways to express oneself in the world. The Web3 industry is no stranger to this progression, especially given that the art space has become one of the most visible frontiers for Web3’s growth, through the rise of NFTs.</p><p>The new age of art, which some would call Art 3.0,  is characterized by the expansion of digital art and exploration of <strong>generative art</strong>. In this article, we provide a closer look at the impact of generative art, especially through the lens of the rise of new technologies such as Web3 and artificial intelligence (AI), as well as the key players that push it forward, including Artech Club.</p><p><strong>Generative Art Origins: It’s Older Than You Think</strong></p><p>Generative art is often defined as any type of art that is created algorithmically. When artists create generative art, they do it not through a completely conscious effort but via algorithmic codes or mathematical formulas. In essence, the artist surrenders partial or complete control of the creation process to technology.</p><p>While generative art is usually associated with modern technological tools of the past few years, the concept has been explored back in the 1920s, when art genres such as Dadaism to Surrealism started exploring elements of chance, unpredictability and automatic processes in their artworks.</p><p>But the actual birth of generative art can be traced to the 1950s, a few years after the creation of the earliest computers. During that decade, pioneers such as Herbert W. Franke created artistic oscillograms by using analog systems and cathode-ray oscillographs.</p><p>The first popular exhibit of generative art was launched in 1968 at the Institute of Contemporary Arts in London, where computer‐animated films, plotter graphics and painting machines from artists such as Frieder Nake and Vera Molnár were featured prominently. Five years later, Harold Cohen, the first artist-in-residence at IBM, introduced AARON, a computer program that can draw images by itself.</p><p>With each release of a new computer, generative artists had created more sophisticated generative artworks, but two new technologies would mark the beginning of a new chapter in the genre’s history: Web3 and AI.</p><p><strong>Generative Art Today: Web3 + AI</strong></p><p>Today, most people would associate generative art with AI, driven by the virality of machine-learning models such as Midjourney and OpenAI’s DALL-E, which allows everyone to generate algorithmically-created art based on just a few keywords from the user.</p><p>In reality, AI art is a branch of the wider generative art genre. The AI tools being used by artists of today are a specific but increasingly popular segment among the whole ecosystem of computer-based tools used to make generative art. What AI did, in essence, is to democratize the generative art creation process further than previous technologies did before it.</p><p>Artists use AI to make art by training algorithms called generative adversarial networks (GANs). These networks are trained using datasets of existing images, including human artistic styles, to make unique art pieces. By leveraging GANs and the wealth of imagery available online, artists are able to further refine the AI algorithms in a way that each prompt entered in the AI tool and each new image being generated contributes to future outputs, both in terms of keywords and the art pieces themselves.</p><p>It’s not just AI per se that is unlocking new ways to make generative art. Another example of an innovation in the genre is called time-based generative art, in which audio-visual and motion-based art syncs and transitions with music and other interactive elements. Many modern art exhibits, such as those created by teamLab, would employ these techniques to provide a multi-sensory implementation of generative art. Other sources of creative inputs for generative art include nature-based elements, physics simulations, and crowdsourced data being fed into algorithms to produce new artworks.</p><p>Where does Web3 enter in the picture? The rise of NFTs in the late 2010s, first as novel blockchain-based projects, then the later commercial success of NFT sales in the early 2020s, would represent another frontier in the democratization of art. With NFTs, anyone can make, display, and sell their artworks under a blockchain-based system that ensures royalties and uniqueness of each output. Web3 technologies would have notable roles in the expansion of generative art beyond the commercial potential they generated. For instance, several NFT platforms would make it possible for artists to create interactive and dynamic NFTs that change over time or respond to input.</p><p>Together, Web3 and AI introduced new paradigms for creating, possessing, appreciating, and critiquing generative art, to the point that it has become an increasingly popular genre.</p><p><strong>The Generative Art Market</strong></p><p>Driven by innovations in Web3 and AI, the NFT industry is driving strong demand for generative collections and products. In 2022, the NFT market grew to $41 billion, putting it in a position to eventually match the total value of the global fine art market.</p><p>At the forefront of the growth in generative art are profile picture NFT collections like Bored Ape Yacht Club, which have proved to be wildly popular among both art collectors and the general public. Behind the scenes, tools like Art Blocks, fxhash, Revue, Ganbreeder have empowered artists to create and mint generative NFTs. Art Blocks, for instance, was one of the first NFT platforms to introduce the creation of generative art that is finalized and put on the blockchain permanently, without any ability to alter it further, introducing a new interpretation to the generative art concept.</p><p>Beyond individual generative art pieces, there are many other areas of opportunity for generative art to make its mark in more industries. Aside from digital art, other markets such as gaming and the metaverse are also opening up revenue possibilities for generative art. For example, various metaverse platforms have started using procedural generation for virtual architecture, clothing, artifacts, and other elements needed to build virtual worlds.</p><p>Generative art also encompasses forms that go beyond the visual. This is evident in the growth of music apps like Endel that create adaptive soundscapes through the self-creation of music from an initial set of musical elements and behaviors and rules defined by composers, algorithms, or both working in tandem.</p><p>Even traditional art institutions have started playing a bigger role in growing the generative art market into a more lucrative one. In July 2023, major auction house Christie’s and luxury brand Gucci introduced an auction called Future Frequencies: Explorations in Generative Art and Fashion, where 21 NFTs that feature algorithmic interpretations of the iconic Gucci Bamboo 1947 handle were sold. In the same month, rival auction house Sotheby’s launched a generative art program powered by Art Blocks. For the first iteration of the program, Sotheby’s will sell digital art honoring generative art pioneer Vera Molnar.</p><p><strong>What’s Next for Generative Art</strong></p><p>With the increasing adoption of Web3 and AI technologies, as well as the acceptance of more major art institutions towards generative art, we will likely see more mainstream artists embracing generative art. The rising popularity of generative art will also likely result in the increase of the public’s use of AI-driven GANs and Web3-powered NFT creation tools to explore more ways to express their creative sides. In addition, this increase in popularity will likely result in interdisciplinary collaborations between coders, mathematicians, and designers, as more people take keen interest in the possibilities of this art genre.</p><p>Alongside this increase of accessibility for generative art to the general population, those who have been working in the art industry for years will be at the forefront of finding novel applications of emerging tech like quantum computing to generative art, unlocking new areas of specialization for these artists. There could also be new avenues through which generative art can be exhibited and capitalized upon, given the expectations for the future growth of new fields such as the metaverse, VR/AR, and ambient computing for dynamic and responsive environments.</p><p>However, as artists further define their specializations and intellectual properties amid the rise of AI in art, the growing art community will likely have substantial and debate-fueled conversations about the role of technology such as AI and Web3 in the future definition of art, as well as the ethics and boundaries of creativity.</p><p>But ultimately, the future of generative art will be shaped by active participants, including both traditional and Web3-based companies, collectives, and artists themselves. In this emerging space in the art world, there’s still room for newcomers to make an impact in this art movement, including startups aiming to help generative artists, such as Artech Club.</p><p><strong>What Artech Club Does for Generative Art</strong></p><p>Artech Club, an upcoming Web3 education and media platform, has recently <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.artechclub.com/post/artech-club-launches-the-generative-art-incubator-search-for-1-000-artists-and-platforms">launched</a> its first event, called the Generative Art Incubator: Search for 1,000 Artists and Platforms. Through this campaign, Artech Club will provide generative artists and platforms, as well as artists, groups, and IP owners who want to explore generative art, with all-around support in incubation, marketing, and brand building.</p><p>Artech Club is composed of a team of initial builders in the development of the blockchain and fintech. We’ve witnessed and participated in the building of this industry by implementing our personal passions, forcast, inspirations, and efforts, values to previous projects and team. Our Initiatives in the promotion and incubation campaign for generative artists are in line with our values: unlimited possibilities (interdisciplinary), sustainability (conservation of energy and materials), collaboration (among mainstream artists, developers, NFT artists, designers, etc.), and creativity (new ways of creating art).</p><p>Our journey in the blockchain ecosystem started in 2015 with the rise in global popularity of Bitcoin. We are a team of pioneers in the Web3 space, all captivated by the technology’s potential to transform the world. When Ethereum arrived, it was like a lightbulb moment - suddenly smart contracts and dApps were possible. We dove headfirst into this new frontier, participating firsthand in the DeFi explosion of protocols like Uniswap. The thrill of innovation never ceased. As the ecosystem grew, we were there to explore every new twist and turn - from traders congregating on platforms like Binance to NFTs bringing blockchain into the arts. Through it all, our passion as builders and believers only intensified. We&apos;ve been invested in this community from the genesis block to today.</p><p>Now, we look to the horizon for the next wave of evolution. Generative art represents an entirely novel collision of blockchain, AI, and human creativity. We are committed to being pioneers once again, supporting artists and collectors as they shape the future of digital art. - Our value proposition lies in the combination of art and tech, and generative art is undoubtedly an expression of our strengths as a club and our aspirations of growing the Web3 industry through tech-driven art.</p><p><strong>About Us</strong></p><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/"><strong>Artech Club</strong></a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area.</p><p><strong>Make Yourself Heard</strong></p><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in creating content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our latest article.</p><p><strong>Follow us on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth"><strong>Twitter</strong></a><strong> and </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth"><strong>Mirror</strong></a> to join the Artech Club!<strong>Sources:</strong>    <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.artblocks.io/">Art Blocks</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://magazine.artland.com/generative-art/">Artland</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.christies.com/features/ai-and-generative-art-collecting-guide-12707-1.aspx">Christie’s</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coindesk.com/web3/2023/06/28/sothebys-to-launch-on-chain-generative-art-program-powered-by-art-blocks-engine/">Coindesk</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://decrypt.co/resources/what-is-a-generative-art-nft-inside-the-algorithmic-art-revolution">Decrypt</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.forbes.com/sites/bernardmarr/2023/07/28/the-future-of-art-generative-ai-web3-and-the-immersive-internet/?sh=276bfb0e1357">Forbes</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forkast.news/generative-art-the-golden-goose-of-nfts/">Forkast</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://jingdaily.com/gucci-christies-generative-art-ai-nfts/">Jing Daily</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sothebys.com/en/articles/generative-art-a-quintessentially-modern-art-form">Sotheby’s</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://tokenminds.co/blog/nft-development/5-amusing-facts-that-make-generative-art-nft-fitting-for-your-project/">Token Minds</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://unchainedcrypto.com/generative-art-nfts/">Unchained</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.wallpaper.com/art/generative-art">Wallpaper</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/d9101d76beaae4e58b25f212a1024c36cb285ba2289c134f84b29d3ab32ec4a5.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Artech Club Launches the Generative Art Incubator: Search for 1,000 Artists and Platforms]]></title>
            <link>https://paragraph.com/@artechclub/artech-club-launches-the-generative-art-incubator-search-for-1-000-artists-and-platforms</link>
            <guid>V4CpF0FtmsX8ia7cmXLX</guid>
            <pubDate>Tue, 25 Jul 2023 14:42:41 GMT</pubDate>
            <description><![CDATA[On July 26th, 2023, Artech Club announced the launch of its first event, called the Generative Art Incubator: Search for 1,000 Artists and Platforms. Through this campaign, Artech Club will provide generative artists and platforms, as well as artists, groups, and IP owners who want to explore generative art, with all-around support in incubation, marketing, and brand building. The Generative Art Incubator aims to help generative artists in growing their network and maximize their potential by...]]></description>
            <content:encoded><![CDATA[<p>On July 26th, 2023, Artech Club announced the launch of its first event, called the <strong>Generative Art Incubator: Search for 1,000 Artists and Platforms</strong>. Through this campaign, Artech Club will provide generative artists and platforms, as well as artists, groups, and IP owners who want to explore generative art, with all-around support in incubation, marketing, and brand building. </p><p>The Generative Art Incubator aims to help generative artists in growing their network and maximize their potential by providing strategic consulting and market services. Through this campaign, Artech Club also wants to promote creativity and productivity regarding generative art, while collecting, growing, and transferring more artistic value for NFT platforms and users in the Web3 ecosystem. Artech members are committed to launching a series of activities to promote value flow and ultimately realize a sustainable Web3 future for generative artists.</p><p>With the rapid iteration and popularization of blockchain, metaverse, and AI technologies, we have observed that generative art is becoming an important part of the Web3-driven art market, using the interdisciplinary combination of <strong>code</strong> and <strong>design</strong> to create highly potential artistic and collectible works. </p><p>Generative art is a form of artistic expression that challenges traditional aesthetics. More artists are willing to use the latest technologies, such as blockchain, metaverse, artificial intelligence, AR (augmented reality), VR (virtual reality), and more, to create more interesting artworks in combination with their own artistic thinking and style. </p><p>At the same time, we recognize that these artistic attempts will generate greater utility in the Web3 virtual space, while providing more choices and market value for NFT platform and collection users through art collections and transactions. </p><p>Hence, we at <strong>Artech Club</strong> chose to emphasize the combination of art and technology for our first campaign, with the hope of helping spur innovation in generative art and Web3.</p><p>Generative artists and platforms from all over the world are welcome to sign up. The Artech team aims to provide a full range of market and brand incubation services for artists&apos; works and projects.  The team, which consists of members with several years of experience in launching marketing and growth campaigns for the world’s biggest Web3 companies, is in a unique position to help artists create personal IP and art platforms to build brand image and influence. If you are interested in this program, please fill out the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://forms.gle/DLnTJPNGbvZ32QrN6">registration form</a> and contact us now!</p><p><strong>About Artech Club</strong> </p><p>Aretch Club is initiated by seasoned professionals with extensive experience across the web3 and blockchain ecosystem. The club is dedicated to promote value creation and circulation while working towards building a sustainable web3 future. Transcending physical and virtual boundaries, club members and partners seek innovative solutions through various activities and initiatives focused primarily on education, communication, media,, brand-building, and marketing. Aretch Club has launched Media Labs, which advocates leveraging code and media as tools to empower web3 projects and communities. Media Labs aims to provide web3 communities with marketing and branding consulting services for development and growth.</p><p>Find more information, please visit:<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://www.artechclub.com/"> www.artechclub.com</a>. Contact us: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:info@artechclub.com">info@artechclub.com</a>.</p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e6490174b2639c863aedffce192a3171ddc9c1e661576758d12c342e38cec72a.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[FAQ: U.S. SEC vs. Ripple and What It Means for Web3]]></title>
            <link>https://paragraph.com/@artechclub/faq-u-s-sec-vs-ripple-and-what-it-means-for-web3</link>
            <guid>6pYXI91IO61e2A8kqwnx</guid>
            <pubDate>Tue, 25 Jul 2023 03:39:29 GMT</pubDate>
            <description><![CDATA[Recently, a U.S. court made a landmark ruling on the ongoing legal battle between the U.S. Securities and Exchange Commission and major cryptocurrency Ripple. In a decision that is considered partially in favor of Ripple, the U.S. District Court of the Southern District of New York ruled that the sale of XRP tokens on exchanges and through algorithms are not considered a sale of securities because they did not constitute investment contracts. In this article, we discuss the impact of the deci...]]></description>
            <content:encoded><![CDATA[<p>Recently, a U.S. court made a landmark ruling on the ongoing legal battle between the U.S. Securities and Exchange Commission and major cryptocurrency Ripple. In a decision that is considered partially in favor of Ripple, the U.S. District Court of the Southern District of New York ruled that the sale of XRP tokens on exchanges and through algorithms are not considered a sale of securities because they did not constitute investment contracts.</p><p>In this article, we discuss the impact of the decision on how Web3 companies operate in the future and what other issues remain in need of regulatory clarity.</p><h2 id="h-what-the-case-was-all-about" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What The Case Was All About</h2><p>In December 2020, the SEC sued Ripple and its executives CEO Brad Garlinghouse and co-founder Christian Larsen. The lawsuit claimed that Ripple failed to register XRP as security with the SEC before offering around $1.3 billion worth of tokens in a series of transactions. The regulator’s case involved three categories of unregistered XRP offerings and sales:</p><p>Institutional sales under written contracts for which Ripple received $728 million Programmatic sales on digital asset exchanges for which Ripple received $757 million Other distributions under written contracts, such as issuances and grants to executives, employees, and other parties, for which Ripple recorded $609 million in considerations other than cash.</p><p>Basically, what the case is trying to allege is that Ripple’s actions constitute investment contracts under the Howey test. This test, which was established in 1946 by the U.S. Supreme Court, is applied in numerous cases in the U.S. to determine whether various financial arrangements and offerings constitute securities.</p><p>The Howey test outlines four elements, or so-called prongs, that are present in a transaction for it to be considered an investment contract subject to U.S. securities laws:</p><p>An investment of money In a common enterprise With the expectation of profit To be derived from the efforts of others</p><p>In the original 1946 case that spawned the beginnings of the Howey test, the SEC sued W.J. Howey Co. for selling tracts of citrus groves to buyers in Florida without the regulator’s permission. Under the sale terms, the buyers must lease back the land to Howey, the company’s employees will maintain the groves and harvest the fruits, and the company will share the revenues with the buyers. In its ruling, the Supreme Court determined that the transactions are considered investment contracts, because:</p><p>The buyers invested money in Howey’s land They invested in Howey with by leasing back the land they bought The buyers received a share of the profit from the deal The labor that was needed to get profit was from Howey’s employees</p><p>Fast forward 70+ years, this test is being applied to Ripple’s XRP tokens. The final results from this case will have a huge impact on the Web3 industry due to the involvement of cryptocurrencies in just about every action that the industry undertakes.</p><h2 id="h-what-the-sec-vs-ripple-ruling-resolved" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What the SEC vs Ripple Ruling Resolved</h2><p>In her ruling on the SEC vs. Ripple case, Judge Analisa Torres of the Southern District of New York applied the Howey test on the three categories of distributions. The results:</p><p><strong>XRP sales on exchanges ARE NOT securities transactions.</strong></p><p>The ruling determined that when Ripple and its executives sold XRP on third-party digital asset exchanges, there was a lack of reasonable expectation of profits from the transactions. The court also noted that when Ripple sold its XRP tokens in the open market, the company did not make promises or offers to unknown buyers, mainly because the buyers did not know who sold the tokens they just bought. Furthermore, Ripple was responsible for fewer than 1% of the global XRP trading volume since 2017. In effect, XRP sales on exchanges fail the Howey test on the third prong.</p><p>This is a positive ruling from the perspective of cryptocurrency traders and exchanges, as other noteworthy lawsuits by the SEC against several Web3 companies are based on assumptions that the cryptocurrencies being offered on exchanges are considered as securities. In the cases against Binance and Coinbase, the SEC claimed that the exchanges have “made available for trading on them crypto assets that are offered and sold as investment contracts, and thus as securities.” In effect, Judge Torres delivered a rebuke to the SEC on this line of accusation.</p><p>As a result of this ruling, many of the exchanges that have delisted XRP following the filing of the SEC lawsuit in 2020 have started re-listing the crypto token.</p><p><strong>XRP grants to employees and executives ARE NOT securities transactions.</strong></p><p>In this part of the lawsuit, Judge Torres ruled that the distribution of XRP tokens to Ripple’s team members as compensation and grants to incentivize development on the XRP Ledger cannot be considered a securities transaction. This is simply because the recipients did not have to pay for the tokens. Hence, the transaction failed the Howey test on the first prong.</p><p>With this decision, airdrops, free mints, social media giveaways, and token claims are likely protected from being considered as securities transactions, as these activities do not involve payments to crypto issuers. Many Web3 companies’ marketing teams rely heavily on these activities, and clearing them from being securities should take away one more cause for concern from these teams.</p><p><strong>XRP sales to institutional purchasers ARE securities transactions.</strong></p><p>Amid the favorable rulings, SEC managed to win in one part of the lawsuit, the part where they claimed that Ripple received $728 million from institutional sales under written contracts. These transactions passed the Howey test because:</p><p>The buyers paid Ripple for XRP tokens Ripple used the assets raised from the institutional sales to “promote and increase the value of XRP by developing uses for XRP and protecting the XRP trading market” The buyers profited in proportion to their XRP holdings as the tokens increased in value, as promised by Ripple The buyers did not work on increasing the value of XRP because they were not part of the Ripple team</p><p>In a related matter, the decision has put a halt on the common defense used by Web3 companies to assert that cryptocurrencies can be considered as utilities, especially if they are being used in Web3 solutions connected to them. The ruling found that buyers bought XRP not to use it as a currency but as an investment, citing that some buyers agreed to lockup provisions based on XRP’s trading volume and purchased far more than they would need to transact using Ripple’s enterprise solutions.</p><p>In effect, the ruling sets the terms that will turn an institutional purchase of cryptocurrencies into a securities transaction. Moving forward, Web3 companies would be wise to be careful about avoiding explicit contracts similar to what XRP’s institutional buyers had.</p><p>“Ripple selling XRP directly pursuant to contracts was an investment contract, and thus a security. Ripple had fair notice that doing this without registration was illegal. And a jury will be needed to decide whether Ripple execs aided and abetted this unregistered issuance,” said ConsenSys lawyer Bill Hughes.</p><h3 id="h-what-remains-unresolved-in-the-case" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">What Remains Unresolved in the Case</h3><p>Despite the seemingly bullish outcome of the SEC vs. Ripple case for Web3 companies, legal experts have cautioned that the ruling has yet to answer the question on whether digital assets such as crypto tokens and NFTs are considered securities under U.S. law. Neither did the ruling provide clarity on whether secondary market sales of digital assets can be considered securities contracts in general. With several lawsuits taking place against many other Web3 companies, there is a potential for contradicting rulings from different district courts. The call for further regulatory clarity remains strong as ever.</p><p>Some lawyers opined that the decision raises more questions than it answers. For instance, Preston Byrne, partner at Brown Rudnick LLP, said in response to the ruling, “The Ripple summary judgment is obviously not the last word on the issue. How can a thing be a security in one transaction, but not in another? I also think that Judge Torres&apos; ruling in Ripple is logically not consistent with Judge Castel&apos;s ruling in Telegram, which if applied to Ripple would mandate a different conclusion.”</p><p>It’s worth noting that in a separate complaint in 2019, the SEC sought to stop chat app Telegram from offering digital tokens called Grams. In 2020, Judge P. Kevin Castel of the U.S. District Court for the Southern District of New York ruled that the SEC established substantial likelihood of proving that Telegram&apos;s sale of Grams broke securities laws. Telegram settled the case and returned $1.2 billion to Grams investors.</p><p>Moving forward, with each side of the SEC vs. Ripple fight scoring partial victories of their own, either party can file for an appeal. For the SEC side, they may cite the Telegram case ruling to insist on its accusations regarding Ripple’s transactions. The regulator can also challenge Judge Torres’ ruling in the 2nd U.S. Court of Appeals, with the intent of stopping judges in the other cases from making the same ruling regarding the sale of crypto tokens on exchanges. For Ripple, they may seek reconsiderations on the ruling on XRP sales to institutional investors. There’s also a possibility of both sides coming to a settlement agreement, like what Telegram did.</p><p>As for the other Web3 companies that the SEC sued, the largely pro-Ripple ruling has given them a reason to hope that they will also receive a favorable outcome. Paul Grewal, chief legal officer at Coinbase, noted that if XRP is not designated as a security in Judge Torres’ decision, then other cryptocurrencies shouldn’t either. “I think it would be a mistake to assume that, in every instance, and in every transaction, the securities laws do not apply. That’s never been Coinbase’s position, I don’t think it should be anyone’s reasonable position. But if you literally replace the letters XRP with the letters for any other token, in this decision, the logic still holds,” Grewal said.</p><p>In the bigger picture, the continued lack of regulatory clarity in the U.S., coupled with the SEC’s hot pursuit of Web3 companies, will likely put the country at a disadvantage in the Web3 scene, especially given that economic rivals have started adopting a more positive and clear regulatory approach towards cryptocurrencies. Whether the Ripple ruling will result to greater freedoms for Web3 in the US or further stagnation and stifling remains to be seen, but this generally pro-Web3 ruling is a step forward for the industry.</p><h2 id="h-about-us" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">About Us</h2><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/">Artech Club</a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area.</p><h2 id="h-make-yourself-heard" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Make Yourself Heard</h2><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in creating content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our latest article. Follow us on Twitter and Mirror to join the Artech Club!</p><p>Sources: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/BillHughesDC/status/1679525517068759040?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1679525517068759040%7Ctwgr%5E64e63836e82bea35a31444302ad9630f7fd79163%7Ctwcon%5Es1_&amp;ref_url=https%3A%2F%2Fwww.coindesk.com%2Fpolicy%2F2023%2F07%2F13%2Fsale-of-xrp-on-exchanges-not-investment-contracts-court-rules-in-sec-case-against-ripple%2F">Bill Hughes</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.bclplaw.com/en-US/events-insights-news/sec-v-ripple-labs-a-critical-industry-win.html">Bryan Cave Leighton Paisner Law</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/BryanJacoutot/status/1679539635586752541?ref_src=twsrc%5Etfw%7Ctwcamp%5Etweetembed%7Ctwterm%5E1679539635586752541%7Ctwgr%5E64e63836e82bea35a31444302ad9630f7fd79163%7Ctwcon%5Es1_&amp;ref_url=https%3A%2F%2Fwww.coindesk.com%2Fpolicy%2F2023%2F07%2F13%2Fsale-of-xrp-on-exchanges-not-investment-contracts-court-rules-in-sec-case-against-ripple%2F">Bryan Jacutot</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coindesk.com/policy/2023/07/13/sale-of-xrp-on-exchanges-not-investment-contracts-court-rules-in-sec-case-against-ripple/">CNBC</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coindesk.com/policy/2023/07/13/sale-of-xrp-on-exchanges-not-investment-contracts-court-rules-in-sec-case-against-ripple/">CoinDesk</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cointelegraph.com/learn/the-sec-vs-ripple-lawsuit-everything-you-need-to-know">Cointelegraph</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.fenwick.com/insights/publications/sec-v-ripple-labs-securities-law-analysis-under-howey-applied-on-a-transaction-by-transaction-basis#_ftnref1">Fenwick Law</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.gtlaw.com/en/insights/2020/4/sec-v-telegram--a-groundbreaking-decision-in-cryptocurrency-enforcement">GreenbergTraurig Law</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.investopedia.com/terms/h/howey-test.asp">Investopedia</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/prestonjbyrne/status/1679516003200389124">Preston Byrne</a>, Reuters [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.reuters.com/technology/us-sec-developing-rules-ai-conflicts-interest-2023-07-17/">1</a>] [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.reuters.com/technology/crypto-firms-facing-us-sec-charges-find-hope-ripple-ruling-experts-say-2023-07-17/">2</a>], <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sec.gov/news/press-release/2020-146">U.S. Securities and Exchange Commission</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/8534461195b0c14ae0a85d8c5ae73988beea3dc83feddd5a84d145095fcbe802.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Hong Kong Is Welcoming Web3. Or Is It?]]></title>
            <link>https://paragraph.com/@artechclub/hong-kong-is-welcoming-web3-or-is-it</link>
            <guid>8km35UFkafDVLVBS1WIO</guid>
            <pubDate>Tue, 11 Jul 2023 21:29:35 GMT</pubDate>
            <description><![CDATA[The global regulatory landscape for Web3 has become as shifty as the Web3 industry itself. But one thing that has stayed constant, at least until recently, is China’s hostile approach towards crypto exchanges, crypto mining operations, and many other sectors of Web3. However, in recent months, we have witnessed something of a reversal in this trend, if what we’re seeing in Hong Kong is any indication. Since late last year, a series of actions by the Hong Kong government has paved the way for ...]]></description>
            <content:encoded><![CDATA[<p>The global regulatory landscape for Web3 has become as shifty as the Web3 industry itself. But one thing that has stayed constant, at least until recently, is China’s hostile approach towards crypto exchanges, crypto mining operations, and many other sectors of Web3.</p><p>However, in recent months, we have witnessed something of a reversal in this trend, if what we’re seeing in Hong Kong is any indication. Since late last year, a series of actions by the Hong Kong government has paved the way for more Web3 companies to operate legally and with greater liberty in the city, highlighted by its decision to legalize retail crypto trading in June 2023. Hong Kong’s recent friendly stance on Web3 starkly contradicts the increasingly heavy-handed approach of the U.S. towards the industry. </p><p>In this article, we explore the actions that Hong Kong has done to become the next big global Web3 hub, assuming it plans to do so.</p><h2 id="h-a-timeline-of-hong-kongs-recent-web3-regulations" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>A Timeline of Hong Kong’s Recent Web3 Regulations</strong></h2><p>In the early days of Web3, Hong Kong was considered one of the industry’s global hubs, Major crypto companies such as FTX and Crypto.com were founded in the city. But in 2017, China cracked down on initial coin offerings (ICOs) and banned cryptocurrency exchanges. As a Chinese territory, Hong Kong followed suit, starting with the establishment of a voluntary licensing system by Hong Kong’s Securities and Futures Commission (SFC).</p><p>Since then, crypto trading platforms in Hong Kong were only allowed to provide services to institutional investors and professional clients with portfolios of at least HK$8 million (US$1 million) under this licensing system. Only two exchanges opted into the system, which effectively prohibited Hong Kong retail investors from legally dealing with crypto as an investment. This approach was pretty much in line with China’s generally anti-crypto stance, intensified in September 2021 by a pledge to root out crypto mining operations.</p><p><br>In October 2022, Hong Kong released the first of many pro-Web3 statements with a policy statement that calls for “promoting [the] sustainable and responsible development of the [virtual assets] sector in Hong Kong,” in reference to Web3 digital assets such as cryptocurrencies, NFTs, and more. “We recognize the potential of [distributed ledger technology] and [Web3] to become the future of finance and commerce, and under proper regulation, they are expected to enhance efficiency and transparency, which in turn will reduce or resolve existing frictions across clearing, settlement, and payments,” according to the statement.</p><p>In December 2022, Hong Kong’s Legislative Council amended its Anti-Money Laundering and Counter-Terrorist Financing Ordinance, giving the SFC direct regulatory oversight over cryptocurrency exchanges operating in the city. The amendment, which specifies the granting of licenses only to Hong Kong-formed corporations or registered non-Hong Kong companies with a permanent place of business in Hong Kong, was made effective in April 2023.</p><p>In May 2023, the Hong Kong Monetary Authority reportedly encouraged major banks HSBC, Standard Chartered, and Bank of China to accept crypto exchanges as clients. Hong Kong lawmaker Johnny Ng, a member of China’s top political advisory body, was also said to have invited Coinbase and other crypto exchanges to set up in the city.</p><p>In June 2023, Hong Kong introduced a new regulatory regime for virtual assets, allowing retail investors to trade major digital tokens at licensed crypto exchanges. The new rules require crypto exchanges to obtain a license with the SFC after a one-year transition period. Around 150 companies were said to have applied for a crypto license in Hong Kong, reportedly spending up to US$25 million to secure a license. By the end of that month, the Hong Kong government established a task force for promoting Web3, consisting of 15 non-official members from relevant market sectors, including Animoca Brands Chairman Yat Siu.</p><p>In addition, Hong Kong regulators have created a stablecoin issuance playbook, signaling the potential creation of a Hong Kong Dollar-based stablecoin. There are also reports of ongoing discussions regarding the formation of a stablecoin based on the CNH, the overseas version of the Chinese Yuan.</p><p>Hence, in less than a year, Hong Kong made a 180-degree pivot from skepticism to support of Web3. </p><h2 id="h-hong-kongs-impact-on-the-global-web3-landscape" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Hong Kong’s Impact on the Global Web3 Landscape</strong></h2><p>To understand Hong Kong’s actions toward Web3, it’s important to be aware of a few catalysts at play: the post-COVID reopening and recovery of Hong Kong and the heated geopolitical rivalry between the U.S. and China. </p><p>Over the past few years, Hong Kong faced an exodus of capital and talent, driven by events related to political unrest and strict pandemic-related restrictions. As COVID-19 subsided worldwide, the Chinese territory has been eager to reopen for business, with several incentives being placed on multiple industries, including Web3. Last year, Hong Kong Financial Secretary Paul Chan called cryptocurrencies and other virtual assets “unstoppable new financial innovations” and called for wider acceptance. By forming a clear regulatory policy on Web3, Hong Kong is aiming to reclaim its reputation as a major, future-forward financial hub. </p><p>When asked about Hong Kong’s new Web3 rules, Yat Siu commented that Web3 rules are starting to become more consistent in Hong Kong. According to him, Hong Kong had seen an opportunity to take a leadership position in terms of driving Web3 development. The timing is crucial, as other major financial hubs such as Japan, the Middle East, and Europe are also crafting their respective Web3 regulations and providing more clarity for the industry in terms of how to safely operate globally. </p><p>The favorable atmosphere towards Web3 is seen as a surprising development in the city that serves as the international economic gate to China, which has long been hostile towards Web3 but is also seeing changes in this stance. Earlier this year, Chinese economist Huang Yiping, a former high-ranking official of the People&apos;s Bank of China, urged the country to reconsider whether the ban on cryptocurrency trading is sustainable in the long run. He argued that a permanent ban on cryptocurrencies could result in many missed opportunities for the formal financial system.</p><p>Whether Hong Kong’s Web3 moves are isolated instances that apply only to the city or a prelude to a more significant change in China, it has been clear enough that the new Web3 rules contrast the recent hostile stance of the U.S. towards the industry. Over the past few weeks, the U.S. Securities and Exchange Commission (SEC) filed charges against Binance.US and Coinbase for alleged unregistered securities offerings. Siu noted that many Web3 is operating “under a regime of fear” due to the lawsuits.</p><p>In fact, the opposite directions that the U.S. and Hong Kong (and China by extension) are taking regarding Web3 may usher major shifts in the crypto market. In a commentary piece, Omer Ozden, chairman of Web3 investment fund RockTree Capital, noted that several Web3 companies have started preparing for an eventual move outside of the U.S., including Coinbase, perhaps the biggest Web3 name in America. “(U.S. Dolllar-based stablecoin) USDC has lost US$27 billion in market cap from its peak 12 months ago, or nearly 50%. Since this is a U.S. regulated stablecoin, some see the metric as a measure of market consensus on U.S. regulatory confidence: the crypto industry is leaving fast,” Ozden said. </p><p>The contrast between the U.S. and China with regards to Web3 can also be seen as another front of conflict and brinksmanship between the two major global powers. The economic rivals have been at odds in several areas, including territorial waters, semiconductor manufacturing, military escalations, and even finance. Recently, China is promoting the global usage of the Chinese Yuan in an effort to make it one of the world’s reserve currencies, potentially even challenging the US Dollar. While it is too early to see whether Web3 becomes a major part of this rivalry, the opposing regulatory approaches between the two countries is undeniable.</p><h2 id="h-facts-on-the-ground-cautious-optimism-and-challenges-in-hong-kong" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Facts on the Ground: Cautious Optimism and Challenges in Hong Kong</strong></h2><p>While many people in the global Web3 see the developments in Hong Kong as good news, the devil may be hiding in the details. The Web3 rules that Hong Kong has created may lead towards general clarity, but the territory’s regulators have not yet provided details on how to oversee several Web3 innovations such as decentralized finance (DeFi), derivatives, staking, NFTs, and utility tokens. The SFC has said that decisions on these details will be made on a case-by-case basis, which means virtual asset firms operating in these areas are still in the dark on whether they will need licenses to operate. </p><p>The new rules do include some stipulations that may be seen as restrictive to some. For instance, according to the SFC, licensed operators should also perform client checks to ensure that retail traders from mainland China are banned from trading. Companies are also required to set an exposure limit for retail investors and to limit the retail trading of highly liquid tokens to permit only those that have been issued for at least one year. This can result in high costs for licensed companies and further constraints in pursuing more avenues for growth, especially given the massive market potential in China. </p><p>Hence, instead of unanimous approval, Web3 companies operating or planning to set up shop in Hong Kong are exhibiting cautious optimism towards Hong Kong’s new regulatory stance. “Potential investors are proceeding conservatively in setting up virtual-asset trading platforms in Hong Kong. They want to be sure that they don’t end up burning cash,“ said Vince Turcotte, director of digital assets at regulatory technology firm Eventus.</p><p>This cautious optimism is reflected in what Web3 companies are and aren’t doing at the moment in Hong Kong. For instance, the new Web3 rules in the city have not resulted in the increase of jobs in the sector, at least in the short term. While the lack of Web3 job openings is seen as the result of the crypto market dip that started last year, factors such as lack of venture capital activity and general hesitation towards working in Web3 following massive layoffs in the industry have dampened the expected resurgence in Web3 activity in Hong Kong. Interestingly, human resource observers have noticed a slight uptick in legal and compliance jobs for Web3 companies in Hong Kong, but whether this leads to more growth across other categories remains to be seen. </p><p>In addition, not everyone in Web3 shares Hong Kong’s optimism and welcome attitude. Web3 pioneer Bobby Lee, who opened China’s first Bitcoin exchange only and was forced to shut it down amid China’s crackdown in 2017, cautioned that Hong Kong may change its stance in a whim. “I wouldn’t be surprised if Hong Kong did a reversal and put a red light in front of everyone,” he said, adding that the city can still impose significant restrictions or completely ban cryptocurrencies in the future, citing his experience. </p><p>Another area of concern for the Web3 industry is China’s capability to overrule regulations in Hong Kong. In theory, the Chinese territory’s regulators can push back on China’s moves by citing the “one country, two systems” principle that protects the city’s economic and political autonomy. In addition, there are speculations that China is quietly supporting Hong Kong’s Web3 embrace and that Chinese officials have been attending Web3 gatherings in the city. Nevertheless, China’s actions will cast a significant shadow on Hong Kong’s activities. Recently, Pan Gongsheng was named the top Communist Party official at the People’s Bank of China (PBOC), in a move that is seen as a negative for the Web3 industry. In 2017, he made scathing remarks about Web3, saying “If you sit by the river and watch, one day the corpse of Bitcoin will float in front of you.” Appointing a person like that as a potential candidate for PBOC governor is undoubtedly bearish news.</p><p>But regardless of what happens in China, the Hong Kong market will ultimately decide the fate of Web3 in the city more than any regulator could. Web3 observers in Hong Kong noted that while the new regulations prove to be beneficial to Web3 companies that are already operating in the city, new entrants may still see a high barrier for entry, especially if the implementation of rules end up leaning towards a more restrictive approach. Many companies are still on a wait-and-see approach, while others have already moved on to other countries where the market potential is higher. </p><p>Some Web3 observers note that in the past few months, Web3 companies have found it difficult to successfully open a corporate account in Hong Kong, despite the regulations. They also shared that the systems mandated by the new Hong Kong regulations require a lot of technical personnel, which will be difficult to source especially given the perceived lack of incentives in Hong Kong for IT professionals. Ultimately, some Web3 companies may not be swayed enough to open retail investor services in Hong Kong, because the city’s market is dominated by professional investors, and retail investment may not move the needle enough for them to reconsider.</p><h2 id="h-closing-thoughts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"><strong>Closing Thoughts</strong></h2><p>In theory, the new Web3 regulations in Hong Kong can put the major city in a position to become a global Web3 hub. Hong Kong’s Web3 embrace can also be seen as a litmus test for potential policy shifts in China as it competes fiercely with a U.S. that is increasingly becoming restrictive of Web3. However, in practice, regulation is just one of the many factors being considered by Web3 builders when it comes to where they plan to operate and grow their businesses. And this early, the response to the new Web3 rules is more muted than expected. Nevertheless, regulatory clarity in many jurisdictions such as Hong Kong is a positive step towards the global mainstream adoption of Web3. </p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div><p><strong>About Us</strong></p><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/"><strong>Artech Club</strong></a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area. </p><p><strong>Make Yourself Heard</strong></p><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in creating content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our latest article. </p><p><strong>Follow us on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth"><strong>Twitter</strong></a><strong> and </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth"><strong>Mirror</strong></a> to join the Artech Club!<br><br><strong>Sources</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://bitcoinist.com/crypto-innovator-cautions-hk-on-digital-assets/">Bitcoinist</a>, Bloomberg [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.bloomberg.com/news/articles/2023-06-01/hong-kong-s-crypto-ambitions-get-guarded-reception-from-digital-asset-companies">1</a>] [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.bloomberg.com/news/articles/2023-07-05/why-hong-kong-wants-to-be-a-hub-for-the-crypto-sector#xj4y7vzkg">2</a>] [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.bloomberg.com/news/articles/2023-07-03/china-official-who-cited-corpse-of-bitcoin-gets-top-pboc-job#xj4y7vzkg">3</a>],</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coindesk.com/consensus-magazine/2023/06/30/what-new-york-can-learn-from-hong-kong-in-regulating-crypto/">Coindesk</a>, Cointelegraph [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cointelegraph.com/news/hong-kong-crypto-jobs-boom-to-come-say-recruiters?utm_source=Telegram&amp;utm_medium=social">1</a>] [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cointelegraph.com/news/web-3-crypto-u-s-regulatory-uncertainty-could-be-hong-kong-s-gain-yat-siu?utm_source=Telegram&amp;utm_medium=social">2</a>] [<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://cointelegraph.com/news/web3-firms-are-spending-up-to-25m-on-hk-crypto-licenses?utm_source=Telegram&amp;utm_medium=social">3</a>],</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://gia.info.gov.hk/general/202210/31/P2022103000454_404805_1_1667173469522.pdf">Financial Services and the Treasury Bureau of Hong Kong</a>,</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.ft.com/content/da31d2d6-e547-43b0-821d-a235097ef9c9">Financial Times</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.fxmag.com/crypto/huang-yiping-voiced-his-concerns-about-the-future-of-fintech-in-china">FXMAG</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.info.gov.hk/gia/general/202306/30/P2023063000579.htm">Hong Kong Government</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.nixonpeabody.com/insights/alerts/2023/01/18/hong-kong-amends-anti-money-laundering-law-to-cover-virtual-asset-service-providers">Nixon Peabody</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.reuters.com/technology/hong-kong-regulator-issue-crypto-licences-with-retail-investor-guardrails-2023-05-24/">Reuters</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mp.weixin.qq.com/s/u7rHYbNmcjjcAxLQEAbnlg">Tencent Technology</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/28ef66319510365a34949f07ecc1172bb09dddf831121ff443999ff90b8876f3.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Artech Club Monthly Update: Why We Cover Web3 Innovations]]></title>
            <link>https://paragraph.com/@artechclub/artech-club-monthly-update-why-we-cover-web3-innovations</link>
            <guid>jTEtJKtifmotvA4uU4XU</guid>
            <pubDate>Sat, 01 Jul 2023 04:22:01 GMT</pubDate>
            <description><![CDATA[World, Meet Artech ClubToday, Artech Club launches its first monthly update, summing up the group’s latest articles and activities related to blockchain and Web3 innovations. Artech Club is a group of Web3 pioneers who are committed to building a leading Web3 education and media club. Our mission is to provide tips and insights on branding, marketing, and entrepreneurship for those who want to succeed in a world that is increasingly adopting Web3 technology. Since being introduced in April, A...]]></description>
            <content:encoded><![CDATA[<h2 id="h-world-meet-artech-club" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">World, Meet Artech Club</h2><p>Today, Artech Club launches its first monthly update, summing up the group’s latest articles and activities related to blockchain and Web3 innovations.</p><p>Artech Club is a group of Web3 pioneers who are committed to building a leading Web3 education and media club. Our mission is to provide tips and insights on branding, marketing, and entrepreneurship for those who want to succeed in a world that is increasingly adopting Web3 technology.</p><p>Since being <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/IUc2DZIvUHFFxdsRaYXpltR5Pw_cFf_JfPWwR86v87g">introduced</a> in April, Artech Club has focused on education, analysis, and communication in efforts regarding blockchain technology, NFTs, DeFi, Web3, and other innovative concepts. Over the course of the past few months, we have created educational and valuable stories about the latest developments in Bitcoin and Ethereum and the impact they will have in the future. We plan on expanding this pool of knowledge for the Web3 enthusiast community that we are building, by covering more topics that add more value to the conversation about Web3.</p><p>In this update, we will share the following:</p><ul><li><p>Our latest articles from this month</p></li><li><p>Our plans for the next few months</p></li><li><p>The value that Artech Club brings to everyone</p></li></ul><p>In this post, we will review the current state of Web3 space and outline our plans for the upcoming month. We will focus on the security, regulation, and compliance aspects of these technologies, as they are essential to unlocking their full potential in the coming years.</p><h2 id="h-what-artech-club-has-been-up-to-this-month" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">What Artech Club Has Been Up To This Month</h2><p>This month, we have been publishing various educational articles on our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror website.</a> We believe that these topics greatly matter to the Web3 community, as these topics will be crucial factors in how Web3 creates more value over the next decades</p><ol><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/8BH-m_4WFd85pdxZ6D8-0IhN50rDlBtdaZo91JhAtAE">Colored Coins: The Pre-Ordinals Bitcoin NFT Project that Helped Shape Ethereum</a></p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6de804126e187adf6fed336064f22fb67e8ad5132a0067da8c947f91cd6a3102.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Ordinals have renewed popular interest in NFTs, but the concept of making unique digital assets on the Bitcoin blockchain has been explored a full decade ago through what was called Colored Coins. In this article, we look back at the history of the Colored Coins protocol, which predates even Ethereum, and discuss its heavy influence on Vitalik Buterin’s creation of Ethereum and how we see NFTs today.</p><p>2. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/XLP4QKXhkoBEAC6dKeM7HrZOjlDPKW-uN7gyKdjbocY">Bitcoin Smart Contracts Are Here. Will BTC Surpass ETH in Web3?</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/17c135a0b924f7329cd02c90b9e86f7b0622bb68afdefec1a8b338abf8b584cd.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Now that Bitcoin has emphatically entered the smart contract scene with this recent lineup of features, many are wondering if the world’s most valuable crypto token will soon take Ethereum’s lead as the top blockchain for building Web3 solutions.</p><p>3. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/kXHiu76O0X4ZKbRP9mdbAjf7SncW-WObXQP1jXM8rBY">Meet the Web3 Projects Building Smart Contracts on Bitcoin</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3e8e581d887d45a1ac291ff485a14a54530195f3fe66a5e0540253cc4fd10c26.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>For quite some time, the cryptocurrency ecosystem can be quickly summarized this way: you use Bitcoin to spend and store value, but you build apps that can increase this value on the Ethereum blockchain. But this year, several developers working on Bitcoin have launched breakthrough after breakthrough that would allow Bitcoin to also be the blockchain that you can use to build apps.</p><p>4. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/ZllNYJzv5sEtZBNtQrtlXO7AiFexOkyM6PntUg-_E6M">Explain Like I’m 5: Zero-Knowledge Protocols And Why They Are Important for Web3</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7b98cb61fe7c35cc5b583d8acf7e7f90db94a43c8fc6f91143e5b836c2e36cd7.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Simply put, zero-knowledge protocols allow you to prove something without revealing any secrets. With these protocols, you can share knowledge without revealing the actual knowledge itself. Applying these protocols theoretically ensures that your privacy and security are better protected. In this article, we explain in the simplest terms how zero-knowledge protocols work and why they are important to Web3.</p><p>5. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/f9oGGyBnOpoJqKeZN0rhoShRpZ8HCzKCQoz7PMYvif0">Understanding the Zero-Knowledge EVM Ecosystem</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/26ecf2824f2f578159c26dc921a4e7741bf3bca29e65f2b32eaf8e0500f8836c.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>For Web3 to flourish as a new system that replaces the current Web2 status quo, there are advanced protocols and concepts that need to be applied, such as zero-knowledge proofs (ZKPs). Web3 platforms rely on various protocols that implement this concept for real transactions.</p><p>Our audience has showninterest in these articles, and we are proud to report that the number of club members has doubled. At Artech Club, we are always looking for ways to improve and provide more value to our audience. If you have any suggestions or feedback, please let us know. We are excited to hear from you!</p><h2 id="h-coming-soon-lets-talk-about-web3-security-regulations-and-sustainability" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Coming Soon: Let’s Talk About Web3 Security, Regulations, and Sustainability</h2><p>At Artech Club, we want to build a holistic approach to informing people about Web3 matters. To do this, we aim to expand our educational coverage to more areas, including the following:</p><h3 id="h-security" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Security</h3><p>Security is a very critical issue in the crypto and blockchain industry, and we understand the need to educate people on how to protect their assets from hacks, scams, and outright thefts. We also recognize that a lot of security practices in place for Web3 are quite technical in nature, so articles that cover security will be great complements to our existing Web3 technology coverage. Finally, knowledge in security is something that is applicable for anyone working on Web3, so talking about it will bring immediate value to our community.</p><h3 id="h-regulations" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Regulations</h3><p>Given that some of the most important news in Web3 have been about regulators taking action on several Web3 companies, we believe that knowledge in regulatory compliance is more important than ever for people in Web3. This is why we will be dedicating a considerable amount of our time and resources to helping startups and users understand regulatory frameworks.</p><p>To do this, we follow authorities all around the globe and process the information we gather to provide clear information on Web3-related regulations around the world. We understand that clear rules are essential to advancing mass crypto and blockchain adoption. Hence, we also strive to ensure that Web3 startups and users understand regulatory frameworks</p><h3 id="h-sustainability" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sustainability</h3><p>In an industry where projects and companies rise and fall in a matter of days or weeks, we believe that it is important to highlight the Web3 groups that will be here for the long haul. More than enough attention has been given to fast-rising trends in Web3, and we will still cover some of those as part of our holistic educational approach, but we think that a brighter spotlight should be given to projects that have little publicity but major impact. We’ve started this in our previous articles that cover projects impacting Bitcoin and Ethereum, and we will continue this approach in the coming days.</p><p>Another aspect of sustainability is the global impact of Web3 in the world that we live in. Much has been said about the environmental impact of Web3, but the conversation has been lacking in nuance and excessive in the frankly misguided narratives of electricity costs and other adverse effects. Web3 has been around for just 15 years, and several advances have been made in making things more efficient, thus we believe in putting this progress in the proper contexts through nuanced coverage and balanced views.</p><p>Our mission at Artechclub is to empower people with the knowledge they need to make informed decisions in the Web3 space. And we believe that our focus on security, regulations/compliance, and sustainable Web3 projects in the coming months will be a significant step towards achieving this goal. So if you have any questions or need any help understanding these crucial topics, please don&apos;t hesitate to reach out to us. We are always here to help!</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"></h2><p>What Artech Club Brings: Education, Engagement, Consulting</p><p>In addition to our expanded coverage, we also would like to take this opportunity to share a summary of what Artech Club offers to everyone who is working on or planning to start getting into Web3:</p><h3 id="h-education-articles-and-social-media" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Education: Articles and Social Media</h3><p>We initially introduced Artech Club as an educational hub for timely topics in the world of Web3. We shall continue building upon our knowledge pool of in-depth discussions on the topics that matter the most for Web3. Our coverage includes a wide array of topics such as blockchain, cryptocurrencies, NFTs, fintech, Web3 branding and marketing, security, regulations, and sustainability.</p><p>Subscribe to our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror website</a> and follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Twitter</a> for more information.</p><h3 id="h-engagement-discussions-and-nfts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Engagement: Discussions and NFTs</h3><p>Ultimately, Artech Club is aiming to build a community of Web3 enthusiasts who learn from each other about the most important discussions in the industry. To spark conversations, the club will launch several features that involve Web3 solutions and other platforms. Soon, you will be able to contribute to the club and get more benefits from your participation.</p><p>One such example: Do you know that you can mint an NFT of our articles? At the bottom of each article we publish on our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror website</a>, we give you the option to mint an NFT for free. Try it out and be part of the future of Web3 content. Also, stay tuned for more incentives and activities like this in the future.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://opensea.io/assets/ethereum/0x96B88C0eA0788B138d6C89158b193984B69C3783/0">https://opensea.io/assets/ethereum/0x96B88C0eA0788B138d6C89158b193984B69C3783/0</a></p><h3 id="h-consulting" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Consulting</h3><p>Artech Club was formed by a group of Web3 pioneers who have spearheaded branding and marketing campaigns for some of the biggest Web3 brands in the world. And we are more than happy to lend our PR and marketing expertise to help grow your brand, whether you’re a Web3 startup aiming to be the next big thing in the industry, or a Web2 company that seeks to maximize Web3 to further grow your business.</p><p>Contact us at <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:admin@artechclub.com">admin@artechclub.com</a> to know more about the services that we offer.</p><p>See you in the next update!</p><h2 id="h-about-us" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">About Us</h2><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/">Artech Club</a>, dedicated to building a leading web3 education and media club. We are committed to contributing educational and valuable stories about the blockchain ecosystem and web3 world by Artech Media. We hope can deliver value and wisdom to this fascinating area and facilitate the flow of knowledge and value. Make Yourself Heard We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in contributing content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our first sharing. Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Twitter</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="">Mirror</a> is the first step to joining the Artech Club!</p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/1081b434934a7c619755ce690236be2a815598b4be127a76e89740194b8194b6.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Understanding the Zero-Knowledge EVM Ecosystem]]></title>
            <link>https://paragraph.com/@artechclub/understanding-the-zero-knowledge-evm-ecosystem</link>
            <guid>KbuIAN3wwUljnDnn4wSj</guid>
            <pubDate>Wed, 21 Jun 2023 20:42:39 GMT</pubDate>
            <description><![CDATA[For Web3 to flourish as a new system that replaces the current Web2 status quo, there are advanced protocols and concepts that need to be applied, such as zero-knowledge proofs (ZKPs). Basically, ZKPs allow you to prove something without revealing any secrets, and when applied to Web3, it allows blockchain solutions to verify transactions without either party revealing more information about themselves. We have discussed the basics of ZKPs and their importance to Web3 in our previous blog. Ap...]]></description>
            <content:encoded><![CDATA[<p>For Web3 to flourish as a new system that replaces the current Web2 status quo, there are advanced protocols and concepts that need to be applied, such as zero-knowledge proofs (ZKPs). Basically, ZKPs allow you to prove something without revealing any secrets, and when applied to Web3, it allows blockchain solutions to verify transactions without either party revealing more information about themselves. We have discussed the basics of ZKPs and their importance to Web3 in our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/ZllNYJzv5sEtZBNtQrtlXO7AiFexOkyM6PntUg-_E6M">previous blog</a>.</p><p>Applying ZKPs on Web3 solutions will undoubtedly unlock various use cases of blockchain solutions and cryptocurrencies, but to do this, Web3 platforms rely on various protocols that implement this concept for real transactions. To understand how this works, particularly in the leading blockchain platform Ethereum, we need to review two underlying concepts: <strong>Zero-Knowledge Rolluos (ZK-rollups)</strong> and the <strong>Ethereum Virtual Machine (EVM)</strong>.</p><h2 id="h-how-rollups-scale-ethereum" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How rollups scale Ethereum</h2><p>Before we discuss ZK-rollups, we need to understand that there are two main directions toward which scaling solutions for Ethereum are being explored: on-chain scaling and off-chain scaling. </p><p><strong>On-chain scaling</strong> requires changes to Layer 1 (L1) mainnet protocols like Ethereum. For a long time, sharding the blockchain, or the act of splitting the blockchain into discrete pieces (shards) to be verified by subsets of validators, was expected to scale Ethereum. This will require more drastic changes to Ethereum, and while the L1 protocol itself has undergone various changes for scaling purposes, many developers have leaned towards other solutions that are not as invasive.</p><p>Enter <strong>off-chain scaling</strong>, which involves solutions are meant to indirectly scale the primary L1 blockchain, in this case Ethereum, by adding more layers to process the transactions without using the actual core blockchain. A major example of off-chain scaling is the use of rollups.</p><p>Rollups bring the best of off-chain scaling solutions by creating a general-purpose solution while still having the security of a base layer like Ethereum. Rollups settle the transactions off-chain but post the compressed transaction data back to the base layer network and still derive its security from the base layer protocol. This design helps reduce the transaction fees and increase blockchain adoption. </p><h2 id="h-comparison-of-popular-rollup-implementations" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Comparison of Popular Rollup Implementations</h2><p>On Ethereum and a few other L1 protocols, there are two main rollup implementations:</p><p><strong>Optimistic rollups</strong> are Layer 2 (L2) protocols designed to extend the throughput of Ethereum&apos;s base layer. They reduce computation on the main Ethereum chain by processing transactions off-chain, offering significant improvements in processing speeds. The most popular implementations are <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.optimism.io/">Optimism</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://arbitrum.io/">Arbitrum</a>. </p><p>Meanwhile, <strong>zero-knowledge rollups (ZK-rollups)</strong> bundle (or “roll up”) transactions into batches that are executed off-chain. Off-chain computation reduces the amount of data that has to be posted to the blockchain. ZK-rollup operators submit a summary of the changes required to represent all the transactions in a batch rather than sending each transaction individually. They also produce validity proofs to prove the correctness of their changes. The validity proof demonstrates with cryptographic certainty that the proposed changes to Ethereum&apos;s state are truly the end-result of executing all the transactions in the batch.</p><p>To better understand ZK-rollups, watch this video from Finematics:</p><div data-type="youtube" videoId="7pWxCklcNsU">
      <div class="youtube-player" data-id="7pWxCklcNsU" style="background-image: url('https://i.ytimg.com/vi/7pWxCklcNsU/hqdefault.jpg'); background-size: cover; background-position: center">
        <a href="https://www.youtube.com/watch?v=7pWxCklcNsU">
          <img src="{{DOMAIN}}/editor/youtube/play.png" class="play"/>
        </a>
      </div></div><h2 id="h-zk-rollups-and-evm-compatibility" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ZK-rollups and EVM compatibility</h2><p>** **Many developers of ZK-rollups are building solutions that are meant to be compatible to the Ethereum Virtual Machine (EVM). To recap, the EVM is a runtime environment that executes smart contracts on the Ethereum blockchain, enabling decentralized applications (dApps) to run securely and deterministically. Fortunately, many in the Ethereum community, including founder Vitalik Buterin, support the implementation of ZKP on Ethereum itself. </p><p>Vitalik has been vocal about wanting to see zero-knowledge Ethereum Virtual Machines (zk-EVMs) built on Ethereum’s first layer to speed up the verification process on the base blockchain.  A zkEVM is a significant upgrade to the underlying computational framework of EVM, enabling seamless integration with a highly efficient form of rollup that utilizes zero-knowledge proofs. The zkEVM is a hot research topic in the Ethereum ecosystem.</p><p>The integration of EVM-compatible ZK-rollups is anticipated to empower developers in harnessing the scalability and security benefits offered by zero-knowledge proofs. Furthermore, the compatibility with native Ethereum infrastructure enables developers to construct decentralized applications (dApps) that are compatible with zero-knowledge proofs, using well-established tools and programming languages that have been extensively tested and proven effective. </p><p>If you are interested in digging into zkEVM, don’t miss <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2022/08/04/zkevm.html">this article</a> from Vitalik. </p><h2 id="h-who-are-building-zkevm" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Who are building zkEVM?</h2><p>Whether zkEVM becomes an actual part of Ethereum in its base level or not, there are several projects on making this a reality through ZK-rollups. Here are some projects working on zkEVM:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://polygon.technology/solutions/polygon-zkevm">Polygon zkEVM</a> is a decentralized ZK Rollup on the Ethereum mainnet working on a zero-knowledge Ethereum Virtual Machine (zkEVM) that executes Ethereum transactions in a transparent way, including smart contracts with zero-knowledge-proof validations.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.zksync.io/zkevm/">ZKSync</a>, now on its version 2.0,is an EVM-compatible ZK-ollup being built by Matter Labs, powered by its own zkEVM.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://linea.build/">Linea</a> is type 2 zkEVM that replicates an Ethereum environment by leveraging rollups. Linea’s users include <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://consensys.net/zkevm/">Consensys</a>.  </p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.immutable.com/products/immutable-zkevm">Immutable zkEVM</a> is the first of its kind - a chain for games that offers EVM compatibility, low cost, massive scale, and Ethereum security. The most cutting-edge technology in gaming with the largest ecosystem in web3.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://scroll.io/blog/zkEVM">Scroll</a> is a tech-driven company working on building a native zkEVM Layer 2 Solution for Ethereum.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://taiko.xyz/">Taiko</a> Taiko is a decentralized, Ethereum-equivalent ZK-rollup (a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2022/08/04/zkevm.html">Type 1 ZK-EVM</a>).</p><h2 id="h-closing-thoughts" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Closing thoughts</h2><p>By unlocking the full potential of ZK-rollups, zkEVM is poised to revolutionize the blockchain landscape and empower the development of innovative decentralized applications.</p><p>ZKPs are often referred to as “<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/VitalikButerin/status/1585145691311329280">moon math</a>” because of their complexity. Developers need to make it understandable and accessible to people, so ZK-rollups are necessary to keep the Ethereum ecosystem “open and welcoming” to people without a mathematics degree.</p><h3 id="h-further-reading" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Further Reading</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2023/03/31/zkmulticlient.html">https://vitalik.ca/general/2023/03/31/zkmulticlient.html</a> </p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://scroll.io/blog/kzg">https://scroll.io/blog/kzg</a> </p><h3 id="h-about-us" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">About Us</h3><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/">Artech Club</a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area . </p><h3 id="h-make-yourself-heard" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Make Yourself Heard</h3><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in creating content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our latest article. </p><p>Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Twitter</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror</a> to join the Artech Club!</p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a94a6494c3a2fca1d282dd443fee1c0d16bfd310e6c833cb3834988f65bc021e.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Explain Like I’m 5: Zero-Knowledge Protocols And Why They Are Important for Web3]]></title>
            <link>https://paragraph.com/@artechclub/explain-like-i-m-5-zero-knowledge-protocols-and-why-they-are-important-for-web3</link>
            <guid>VeT8ebqUvPX8CFmst2p0</guid>
            <pubDate>Tue, 13 Jun 2023 05:50:25 GMT</pubDate>
            <description><![CDATA[The goal of the Web3 revolution is to create a new system of accomplishing things without relying on central authorities. Given this mission, privacy and security are some of the most essential values in Web3. We’re moving in this decentralized direction by applying concepts such as zero-knowledge protocols. Simply put, zero-knowledge protocols allow you to prove something without revealing any secrets. With these protocols, you can share knowledge without revealing the actual knowledge itsel...]]></description>
            <content:encoded><![CDATA[<p>The goal of the Web3 revolution is to create a new system of accomplishing things without relying on central authorities. Given this mission, privacy and security are some of the most essential values in Web3. We’re moving in this decentralized direction by applying concepts such as zero-knowledge protocols.</p><p>Simply put, zero-knowledge protocols allow you to prove something without revealing any secrets. With these protocols, you can share knowledge without revealing the actual knowledge itself. Applying these protocols theoretically ensures that your privacy and security are better protected.</p><p>In this article, we explain in the simplest terms how zero-knowledge protocols work and why they are important to Web3.</p><h2 id="h-zero-knowledge-proof" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Zero-Knowledge Proof</h2><p>To understand zero-knowledge protocols, we have to explain what a zero-knowledge proof is.  </p><p>A zero-knowledge proof is a way to show someone that you know something without actually revealing what it is. It’s like being able to solve a mind-bending puzzle without showing anyone how you did it. It&apos;s a magical way to prove that something is true without giving away any of the steps or secrets involved.</p><p>To give you an example of a zero-knowledge proof, let’s go to this tunnel that has a fork to two paths. We explored both paths, and they led to dead ends. Now that we’re back at the fork, I then decided to enter the path at the left and emerge from the right path. You’re now amazed that I can do that, especially given that we just saw the dead ends earlier. In effect, you’ve become a witness to my secret.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e5250244406bcc01375605ea7e818c2e74ed9e4559f24cec9392ca53a2207a34.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Now, you’re thinking of two things. First, you ask me how I did that. I respond, “It’s a secret that only I know, and I won’t tell you that secret.” Second, you want further proof that what I did was not a fluke. You want proof, so you come up with a game to <strong>challenge</strong> me. You will put a ball on either dead end, without me knowing which path you chose. I will then choose any random path and try to retrieve the ball each time. Because I know the secret, I can give a correct <strong>response</strong> to your challenge anytime. I’m able to win the game 100% of the time, no matter how many tries I have. As a result, I get to convince you that I know the secret, without ever revealing to you what that secret is. That’s a zero-knowledge <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://pages.cs.wisc.edu/~mkowalcz/628.pdf%20t">proof</a>.</p><h2 id="h-zero-knowledge-protocol" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Zero-Knowledge Protocol</h2><p>So far, we’ve discussed a single instance of zero-knowledge proof. The challenge is to make a system that processes all proofs this way. This is where zero-knowledge protocols come into play. </p><p>Let’s go back to the tunnel to explain how zero-knowledge protocols work. At this point, you and I meet Ann, who knows a secret about a different tunnel similar to the one where we went earlier. This time, you repeat the ball test we played earlier, and she was able to prove that she knows the secret. I then claim that I also know her secret, even if I really don’t. So you also try the game with me, and I fail most of the time (the few successful attempts being due to sheer luck) because I don’t know the secret of Ann’s tunnel. </p><p>Later on, we realize that each one of us has a separate tunnel where only that person knows the secret. But you can’t continue playing the ball test with each person. At some point, you have to rely on a technology that allows you to do the test across several people in an efficient manner. This is where zero-knowledge protocols come in to solve this problem for you. </p><p>Zero-knowledge protocols do the ball test for you, using algorithms that check the secret you want to prove and then confirm or deny it, without sharing what the actual secret is. For this kind of protocol to work, it has to be:</p><ul><li><p><strong>Complete</strong>. The protocol must always confirm valid inputs (or secrets) as true all the time.</p></li><li><p><strong>Correct</strong>. If I lie about knowing a secret, I should not be able to trick the protocol into thinking my lie is true.</p></li><li><p><strong>Secure</strong>. I should only know about whether the secret is true or false, not the actual secret. I should not be able to hack into the protocol to know the secret.</p></li></ul><h2 id="h-why-is-zero-knowledge-important-to-web3" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why is Zero-Knowledge Important to Web3?</h2><p>Why do zero-knowledge protocols matter for Web3? Let’s go back to the tunnel one more time.</p><p>Now, imagine that each tunnel represents a transaction with another person. There are 8 billion people on Earth right now, and they pay for something at least once a day. That’s at least 8 billion transactions daily that you have to do the ball test for. How do you verify that each purchase is legitimate? In the current digital system, you do that by sharing information about you to several companies and institutions that checks the purchases you make with anyone. You trust these companies to secure your information and log your purchases. They have several protocols that allow them to track your purchases, but at the end of the day, your information is in their hands. This presents all sorts of problems that Web3 is attempting to fix.</p><p>The main point of Web3 is to replace these third parties, which are vulnerable to human error, malicious acts, and other external factors, with programs that use zero-knowledge protocols and other innovations to do a better job of keeping track of who’s paying or sending what to who, without having to give out additional information about yourself to anyone other than the person you’re connecting with. These protocols make Web3 products possible, such as blockchain and cryptocurrency. We will discuss this in our next blogs, so stay tuned.</p><h2 id="h-in-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">In Conclusion</h2><p>The ability to process billions of claims in a private and secure matter, as shown by zero-knowledge protocols, has the potential to change the way we verify the things that we do in daily life. When applied to real life, zero-knowledge protocols can improve the way we verify our identities, assets, and information in a private and secure manner. Zero-knowledge protocols can be intimidating to understand at first, but learning about them and what advantages they offer will be important to our future, as we constantly seek ways to interact better with the world around us.</p><h2 id="h-about-us" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">About Us</h2><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/">Artech Club</a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area. </p><h2 id="h-make-yourself-heard" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Make Yourself Heard</h2><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in creating content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our latest article. </p><p><strong>Follow us on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth"><strong>Twitter</strong></a><strong> and </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth"><strong>Mirror</strong></a><strong> to join the Artech Club!</strong></p><p>Additional Sources: <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://pages.cs.wisc.edu/~mkowalcz/628.pdf">How to Explain Zero-Knowledge Protocols to Your Children</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=fOGdb1CTu5c&amp;ab_channel=WIRED">Wired</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/zero-knowledge-proofs/#:~:text=The%20zero%2Dknowledge%20protocol%20uses,information%20used%20in%20creating%20it.">Ethereum</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/5603214c32af286fd00949d32d0653ea3302a2f7d5a73bb1e27db5ab450059df.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Meet the Web3 Projects Building Smart Contracts on Bitcoin]]></title>
            <link>https://paragraph.com/@artechclub/meet-the-web3-projects-building-smart-contracts-on-bitcoin</link>
            <guid>THKyrupAmLOV4yaEuTux</guid>
            <pubDate>Tue, 30 May 2023 20:23:28 GMT</pubDate>
            <description><![CDATA[For quite some time, the cryptocurrency ecosystem can be quickly summarized this way: you use Bitcoin to spend and store value, but you build apps that can increase this value on the Ethereum blockchain. But this year, several developers working on Bitcoin have launched breakthrough after breakthrough that would allow Bitcoin to also be the blockchain that you can use to build apps. While new features such as Ordinals and BRC-20 have gotten most of the spotlight, the Web3 movement that is wor...]]></description>
            <content:encoded><![CDATA[<p>For quite some time, the cryptocurrency ecosystem can be quickly summarized this way: you use Bitcoin to spend and store value, but you build apps that can increase this value on the Ethereum blockchain. But this year, several developers working on Bitcoin have launched breakthrough after breakthrough that would allow Bitcoin to also be the blockchain that you can use to build apps. While new features such as Ordinals and BRC-20 have gotten most of the spotlight, the Web3 movement that is working to increase Bitcoin’s utility is bigger than you think. But before we talk about these relatively unsung heroes of Bitcoin, let’s discuss briefly how all of these changes became possible. </p><h2 id="h-how-bitcoin-turned-into-a-smart-contract-blockchain" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">How Bitcoin Turned into a Smart Contract Blockchain</h2><p>Many people have a misconception that Bitcoin does not have smart contracts. In fact, Web3 developers have been attempting to add smart contract capabilities to Bitcoin, but the way the Bitcoin blockchain was built made it more difficult to do so, unlike smart contract-ready blockchains like Ethereum. Bitcoin’s programming language, called <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.bitcoin.it/wiki/Script">Script</a>, is not Turing-complete, which is to say that it can’t solve all computational problems, while other blockchains are Turing-complete. As a result, Bitcoin&apos;s smart contracts have been more rudimentary and limited, suitable for simpler applications like multisig transactions and time-locked transactions, such as atomic swaps.</p><p>This scenario has started to change since the Taproot upgrade on the Bitcoin blockchain was activated in November 2021. Taproot is expected to boost the Bitcoin network’s functionality to facilitate fast and reliable transactions. Prior to Taproot, the Bitcoin protocol was still working on Layer-1 developments while other blockchains like Ethereum had already gotten a head start in Layer-2 and decentralized apps (DApps). After Taproot, several Web3 developers have started building on top of Bitcoin to introduce sidechains, drivechains, and even Layer-1 and Layer-2 second-layer solutions. Building on Bitcoin as a base layer for decentralized finance (DeFi), payments, and non-fungible tokens (NFT) will put Bitcoin to even greater levels of visibility and adoption.</p><p>This year, Ordinals introduced a new method for creating digital assets inscribed on satoshis, essentially turning them into NFTs, while the BRC-20 token protocol started drawing comparisons to Ethereum’s ERC-20. The success of the Ordinal/BRC20 boom is built on top of Taproot upgrade. Ordinal introduced the idea of Inscriptions, or the process to connect sats with arbitrary content. Inscription content is entirely on-chain and stored in taproot script-path spend scripts. Taproot scripts have very few restrictions on their content and additionally receive the witness discount, making inscription content storage relatively <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ordinals.com/inscriptions.html">economical</a>.</p><p>In our <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/XLP4QKXhkoBEAC6dKeM7HrZOjlDPKW-uN7gyKdjbocY">previous article</a> about the rise of Bitcoin as a smart contract-ready blockchain, we compared Ethereum to a smartphone operating system that is capable of supporting different applications, while pre-Taproot Bitcoin apps are more similar to the calculator function on cash registers. In essence, Taproot has upgraded this basic calculator to a more advanced version, perhaps like a programmable scientific calculator, but there still remains the major challenge of upgrading it to the mobile OS level where Ethereum is at.</p><p>Nevertheless, even before Taproot, many Web3 developers have been hard at work in shaping Bitcoin’s future as more than just its reputation as the world’s most valuable cryptocurrency. These are some of the projects that are creating new solutions that add major use cases to the Bitcoin blockchain.</p><p><strong>Validity Proof from ZeroSync</strong></p><p>For years, researchers have been working on bringing zero-knowledge proofs or validity proofs to Bitcoin (BTC). The latest work on validity proof is from <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zerosync.org/">ZeroSync</a>. Based in Zug, Switzerland, the ZeroSync Association is a non-profit entity. They are the pioneers in the field of Bitcoin scalability, interoperability and privacy. ZeroSync published the latest <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://zerosync.org/zerosync.pdf">report</a> of our research on introducing validity proofs to Bitcoin. Validity proofs allow users to validate the state of the network without the need to download hundreds of gigabytes of blockchain history or trusting a third party. </p><p>The ZeroSync Association stated in the report that “We implemented a sophisticated prototype and our benchmarks indicate that a full chain state proof is computationally feasible indeed.”This could have a profound effect on how Bitcoin users interact with the network, because users can better protect their privacy with more advanced validity proof systems that will make transactions 100x faster. </p><p>Perhaps the most exciting idea introduced by ZeroSync is zkCoins. It is a client-side validation protocol combined with Zero-Knowledge Succinct Non-interactive Argument of Knowledge (zkSNARKs) method of establishing proof of ownership. ZkCoins have the potential to significantly enhance the confidentiality and speed of transactions. In combination with future Bitcoin features such as the blockchain-oriented language <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://dl.acm.org/doi/10.1145/3139337.3139340">Simplicity</a>, zkCoins will have strong synergies with the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://liquid.net/">Liquid network</a>, a Layer-2 solution that makes it possible to issue and settle digital assets on top of the Bitcoin blockchain.</p><p><strong>Rollkit</strong></p><p>**<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/rollkit/bitcoin-da">Rollkit</a> **is a new framework developed by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://celestia.org/">Celestia</a>, a project looking to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://thedefiant.io/modular-blockchains-celestia">modularize</a> the different components of a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://thedefiant.io/what-is-blockchain-tutorial">blockchain</a>. Rollkit is designed to support sovereign rollups, or scaling systems that make a slow blockchain faster and cheaper, on Bitcoin. Rollkit is opening the door for developers to create rollups with arbitrary execution environments that inherit Bitcoin’s data availability guarantees and re-org resistance. </p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/09bc7798760c04f0e3229e113383cecc1176ae8e649c0d59ab9bbc9b914cd602.png" alt="Source: Rollkit" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Source: Rollkit</figcaption></figure><p>With this new integration, it is now possible to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rollkit.dev/docs/tutorials/bitcoin/">run the Ethereum Virtual Machine EVM on Bitcoin as a Rollkit sovereign rollup</a>. Sovereign rollups on Bitcoin not only expand the possibilities for rollups, but also have the potential to help bootstrap a healthy blockspace fee market on Bitcoin, enabling a more sustainable security budget. An early research implementation allows Rollkit rollups to use Bitcoin for data availability. Sovereign rollups using Bitcoin for data availability are now a reality with Rollkit’s new early research integration.</p><p>You can check this <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rollkit.dev/blog/sovereign-rollups-on-bitcoin/#evm-on-bitcoin-demo">demo</a> of the EVM running on Bitcoin as a sovereign Rollkit rollup.</p><p><strong>Stacks</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.realvision.com/blog/what-is-stacks"><strong>Stacks</strong></a><strong> i</strong>s an open-source, Layer-1 blockchain that connects to the Bitcoin network, allowing users to build smart contracts and DApps. It connects to Bitcoin through the<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://blog.blockstack.org/realizing-web-3-proof-of-transfer-mining-with-bitcoin#:~:text=Proof%2Dof%2DTransfer%20is%20a,commit%20computational%20or%20financial%20resources."> proof-of-transfer (PoX)</a>consensus mechanism where Stacks miners pay Bitcoin to mint new Stacks coins (STX). Stacks leverage Bitcoin’s security and brings smart contracts to the Bitcoin network. The smart contracts are created using a programming language known as Clarity. </p><p>The ultimate goal of all this is to enable the vision of Web3, building a decentralized economy and enabling true user ownership of assets and data, on top of Bitcoin as a settlement layer, and using Bitcoin as a base for decentralized money.</p><p><strong>Rootstock</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rootstock.io/"><strong>Rootstock</strong></a> (RSK) is a sidechain platform that brings smart contract functionality to the Bitcoin network, allowing developers to build and deploy decentralized applications using Solidity, similar to Ethereum. It aims to enhance Bitcoin&apos;s capabilities and provide faster transactions with lower fees, while maintaining a strong connection to the Bitcoin blockchain through merge-mining and two-way peg mechanisms. </p><p>The RSK platform is compatible with the Ethereum Virtual Machine (EVM), allowing developers to write and deploy smart contracts using Solidity, the same programming language used in Ethereum. This compatibility makes it easier for developers familiar with Ethereum to transition to RSK and leverage their existing skills and tools.</p><h2 id="h-in-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">In Conclusion</h2><p>While Bitcoin itself may not have fully implemented expressive smart contracts on its base layer, there are currently numerous projects that are leveraging Bitcoin and aiming to achieve this objective through the utilization of sidechains, drivechains, Layer-2 solutions, and even new Layer-1 protocols. By building upon Bitcoin as a foundational layer for DeFi, payments, and NFTs, Bitcoin&apos;s visibility and adoption can be elevated to new heights, thanks to the several Web3 developers that make this possible.</p><h2 id="h-about-us" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">About Us</h2><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/">Artech Club</a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area. </p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2e9b33c3cc66fc58337198a6596354f264d8467f88b0b56cd870cac7df6092ba.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-make-yourself-heard" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Make Yourself Heard</h3><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in creating content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our latest article. </p><p><strong>Follow us on </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth"><strong>Twitter</strong></a><strong> and </strong><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth"><strong>Mirror</strong></a><strong> to join the Artech Club!</strong></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/d0b5c4b4c8aa37182a04b4c236105f66b6968d0bff2a5772f53ec019139255ff.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Bitcoin Smart Contracts Are Here. Will BTC Surpass ETH in Web3?]]></title>
            <link>https://paragraph.com/@artechclub/bitcoin-smart-contracts-are-here-will-btc-surpass-eth-in-web3</link>
            <guid>Mjor2a4uVgntXhZng5ob</guid>
            <pubDate>Sun, 28 May 2023 22:19:11 GMT</pubDate>
            <description><![CDATA[This year, there have been several Bitcoin breakthroughs that will likely redefine its future. In January 2023, Ordinals debuted as digital assets inscribed on satoshis, essentially turning them into NFTs. In March, an anonymous developer introduced the BRC-20 protocol, a token class modeled after Ethereum’s ERC-20 tokens. And in May, a new Bitcoin-based decentralized exchange (DEX) called Trustless Market launched after a group of developers released smart contracts on the Bitcoin blockchain...]]></description>
            <content:encoded><![CDATA[<p>This year, there have been several Bitcoin breakthroughs that will likely redefine its future. In January 2023, Ordinals debuted as digital assets inscribed on satoshis, essentially turning them into NFTs. In March, an anonymous developer <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.coindesk.com/learn/brc-20-explained-how-tokens-on-bitcoin-work-and-why-they-are-controversial/">introduced</a> the BRC-20 protocol, a token class modeled after Ethereum’s ERC-20 tokens. And in May, a new Bitcoin-based decentralized exchange (DEX) called Trustless Market launched after a group of developers released smart contracts on the Bitcoin blockchain.</p><p>For the longest time, most in the Web3 space treated Bitcoin as the top cryptocurrency, but without the ability to support smart contracts, they built their Web3 solutions on other blockchains such as Ethereum and many others. Now that Bitcoin has emphatically entered the smart contract scene with this recent lineup of features, many are wondering if the world’s most valuable crypto token will soon take Ethereum’s lead as the top blockchain for building Web3 solutions. </p><h3 id="h-smart-contracts-and-their-importance-in-growing-web3" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Smart Contracts and Their Importance in Growing Web3</h3><p>​​<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Smart_contract#:~:text=8%20References-,Etymology,parties%20perform%20on%20these%20promises%22.">Smart contracts</a> were first proposed in the early 1990s by <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Nick_Szabo">Nick Szabo</a>, who coined the term and used it to refer to &quot;a set of promises, specified in digital form, including protocols within which the parties perform on these promises. In the context of blockchain technology, a smart contract refers to a piece of code that is usually stored and executed automatically and in a deterministic way on the blockchain to make it trustless and secure. In other words, it’s an automated program that you can build on top of a blockchain to make trackable and immutable transactions. </p><p>Before Ethereum’s launch in 2014, the pioneering blockchains of the time, including Bitcoin, did not support smart contracts, at least on a viable, scalable level. While there are projects that attempt to bring smart contracts to Bitcoin, such as Colored Coins, Counterparty, and a few others, Vitalik Buterin’s creation of Ethereum would be the first major implementation of the smart contract concept.</p><h3 id="h-ethereums-lead-in-smart-contracts" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Ethereum’s Lead in Smart Contracts</h3><p>Ethereum was partly created as Vitalik’s response to the limitations inherent in Bitcoin, having previously worked on the latter during its early days. As the first blockchain that supports smart contracts as its core feature, Ethereum was able to lead the charge in the growth of Web3, with developers creating several use cases for blockchain, such as tokenization, DeFi, NFTs, and more. The success of Ethereum, which began in the crypto token craze of 2017 and the subsequent rise in prominence of DeFi and NFTs in the years after, has solidified its lead as the blockchain of choice for developers. It has also emboldened other developers to create their own implementations of smart contract-capable blockchains, such as Solana, Cardano, and more. </p><p>The success of Ethereum in popularizing smart contracts is largely driven by the automation and programmability of the <strong>Solidity</strong> language that it uses. Smart contracts on Ethereum (and several other blockchains after) are programmed to have capabilities of receiving, storing and sending funds and even calling other smart contracts. <strong>As a result, they can replicate or even replace the traditional financial institutions that perform a variety of financial functions, such as trading, lending, and earning.</strong> More importantly, no one can alter that smart contract when it&apos;s live – it will always run as programmed.</p><p>Close to a decade after Ethereum’s launch, it is facing a new contender to its smart contract throne: Bitcoin. </p><h3 id="h-bitcoin-responds-taproot-upgrade-getting-into-nfts-and-defi" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Bitcoin Responds: Taproot Upgrade, Getting into NFTs and DeFi</h3><p>There is a common misconception about Bitcoin, specifically that it is viewed as a blockchain that does not have smart contracts. However, smart contracts do exist on the Bitcoin network, albeit in a more rudimentary and inefficient manner, at least until recently. </p><p>The launch of Ordinals, BRC20, and Bitcoin-based DEXes all trace their roots to the latest update on the Bitcoin blockchain: the Taproot upgrade, which was activated in November 2021. While the main priority for launching Taproot was to increase the efficiency, speed, and privacy of Bitcoin, this update was also able to introduce an easier and cheaper way to build smart contracts on top of the top crypto token’s blockchain.</p><p>After the Taproot upgrade, <strong>Bitcoin opened its path to deploy smart contracts and potentially expand its use cases to cover the trending NFT and DeFi markets in the future.</strong> Various projects nowadays are building on top of Bitcoin and trying to attain this goal by introducing sidechains, drivechains, or Layer-2 solutions, or even new Layer-1 protocols. <strong>Building on Bitcoin as a base layer</strong> for DeFi, payments, and NFTs will likely put Bitcoin to even greater levels of visibility and adoption, as shown by projects such as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.realvision.com/blog/what-is-stacks">Stacks</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rootstock.io/">Rootstock</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/rollkit/bitcoin-da">Rollkit,</a> and more.</p><p><strong>Bitcoin vs Ethereum: Smart Contracts</strong></p><p>While the possibilities opened up by smart contract support on Bitcoin can be endless, there is an uphill battle ahead for developers who want Bitcoin to usurp Ethereum’s lead in the smart contract game. </p><p>In the table below, we provide a quick overview of the difference between the Bitcoin and Ethereum blockchains with respect to smart contracts.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ed6367fee4cb422724eff59fd16705312bfcf7f4f3d6620f8e6b68c94fc4e873.jpg" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>When comparing smart contracts on Ethereum and Bitcoin, there are notable differences in terms of functionality and capabilities. Ethereum&apos;s smart contracts is powered by Turing-complete languages, like Solidity.  On the other hand, Bitcoin’s programming language, called <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.bitcoin.it/wiki/Script">Script</a>, is not Turing-complete. So, Bitcoin&apos;s smart contracts are more rudimentary and limited, suitable for simpler applications like multisig transactions and time-locked transactions, such as atomic swaps. More examples can be found <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.bitcoin.it/wiki/Script">here</a>. </p><p>Simply put, the apps on Ethereum are like your typical smartphone app in terms of sophistication, unsurprising given the network’s years-long headstart in smart contracts, while the apps on the Bitcoin network, at least pre-Taproot, are like calculators you use on cashiers. It remains to be seen what other types of apps can be created on Bitcoin post-Taproot, but if the early examples are any indication, Bitcoin’s prospects are promising. </p><h3 id="h-conclusion" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Conclusion</h3><p>Using Bitcoin as a base layer for Web3 applications is an emerging research frontier, and it holds significant excitement as new research results continue to unfold. As we have seen, Bitcoin’s programmability trade-off is not a bad thing, and its smart contract functionality can be expanded on Layer-2 networks or separate blockchains connected to the Bitcoin network.  We look forward to sharing further insights about this exciting area in our upcoming posts. Stay tuned for more in-depth discussions and updates.</p><h3 id="h-about-us" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">About us</h3><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com">Artech Club</a>, a group that is dedicated to building a leading Web3 education and media platform. Artech Club is committed to contributing educational and valuable stories about the blockchain ecosystem and Web3. Our goal is to deliver value and wisdom in this fascinating area . </p><h3 id="h-make-yourself-heard" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Make yourself heard</h3><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in contributing content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our first article. </p><p>Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Twitter</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror</a> is the first step to join the Artech Club!</p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/28443b6ac6502e84721d50a06258a63d6594e6aad661af9cf08f7eb16489bc2d.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Colored Coins: The Pre-Ordinals Bitcoin NFT Project that Helped Shape Ethereum 
]]></title>
            <link>https://paragraph.com/@artechclub/colored-coins-the-pre-ordinals-bitcoin-nft-project-that-helped-shape-ethereum</link>
            <guid>KH3eNonaELIt9FCxtTDl</guid>
            <pubDate>Fri, 26 May 2023 05:48:53 GMT</pubDate>
            <description><![CDATA[Ordinals have renewed popular interest in NFTs, but the concept of making unique digital assets on the Bitcoin blockchain has been explored a full decade ago through what was called Colored Coins. In this article, we look back at the history of the Colored Coins protocol, which predates even Ethereum, and discuss its heavy influence on Vitalik Buterin’s creation of Ethereum and how we see NFTs today. Colored Coin Origins: Vitalik and eToro CEO Working Together Before Vitalik worked on Ethereu...]]></description>
            <content:encoded><![CDATA[<p>Ordinals have renewed popular interest in NFTs, but the concept of making unique digital assets on the Bitcoin blockchain has been explored a full decade ago through what was called Colored Coins. In this article, we look back at the history of the Colored Coins protocol, which predates even Ethereum, and discuss its heavy influence on Vitalik Buterin’s creation of Ethereum and how we see NFTs today.</p><p><strong>Colored Coin Origins: Vitalik and eToro CEO Working Together</strong></p><p>Before Vitalik worked on Ethereum, he was actively involved in a project known as <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Colored_Coins">Colored Coins</a>. The goal of Colored Coins was to create immutable <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Digital_artifact#:~:text=Digital%20artifact%20in%20information%20science,involved%20technique%20and%2For%20technology.">digital artifacts</a> on top of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Bitcoin">Bitcoin</a> transactions.</p><p>To understand what Colored Coins are, imagine that you are marking different beads with colors in a jar. Each colored bead represents a unique digital asset on the blockchain, allowing for the identification and transfer of distinct assets within the system. In the context of the Bitcoin blockchain, a satoshi can be inscribed with unique identifiers (i.e., the act of “coloring” the coin), turning it into a non-fungible token in the process.</p><p>Vitalik worked with <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/EToro">eToro</a> CEO Yoni Assia, Lior Hakim, and Meni Rosenfeld to create Colored Coins, beginning with the release of the project’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.etoro.com/wp-content/uploads/2022/03/Colored-Coins-white-paper-Digital-Assets.pdf">whitepaper</a> in 2012. In an <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://yoniassia.com/coloredbitcoin/">article</a> published in 2012 that discussed the project, Yoni explained that “Colored bitcoins are ordinary bitcoins that at one point at history whee transferred in the Genesis transaction. Since all the history of the each bitcoin is saved in the blockchain, it is possible to check for each bitcoin if it is colored or not.”</p><p><strong>Colored Coin’s Problems and Vitalik’s Alternative</strong></p><p>Upon its launch, Colored Coins was widely discussed in the Bitcoin community as a concept that elevated a mere cryptocurrency like Bitcoin from a fungible collectible to a technology that can suppot tokenization infrastructure. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://coinprism.info/">Explorers</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://coloredcoins.org/colored-coins-copay-addon/">wallets</a> were being developed in support of this concept of customized satoshis.</p><p>However, the problem with implementing Colored Coins is that the issuer of the token holds all the data anchored to the chain that has been colored. This required nodes to backtrace and verify every transaction in the history of Colored Coins in order to make a new transaction. In effect, Colored Coins can be perceived as an inefficient way of making NFTs.</p><p>Learning from the lessons of creating Colored Coins, Vitalik has since moved on to build a new blockchain called Ethereum. He noted the idea for Ethereum is “to create an alternative protocol for building decentralized applications, providing a different set of tradeoffs that we believe will be very useful for a large class of decentralized applications.” In Ethereum’s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ethereum.org/en/whitepaper/#alternative-blockchain-applications">whitepaper</a>, Vitalik referenced the problems he faced with Bitcoin and Colored Coins in this statement:</p><p>“The Bitcoin-based approach, on the other hand, has the flaw that it does not inherit the simplified payment verification features of Bitcoin. And a fully secure SPV (simplified payment verification) meta-protocol implementation would need to backward scan all the way to the beginning of the Bitcoin blockchain to determine whether or not certain transactions are valid.”</p><p><strong>Ordinals: Lessons Learned from Colored Coins and More</strong></p><p>Although Colored Coins never completely took off on its own, the project introduced the possibility of creating NFTs on the Bitcoin blockchain. Meanwhile, more developers continued working on the possibility of creating unique tokens on top of Bitcoin blockchain. One such innovation was the launch of Counterparty in 2014, which made it possible for network effects to take place for unique tokens being created on top of the Bitcoin blockchain. Early applications of NFT technology started to appear, like the Spells of Genesis trading cards in 2015 and Rare Pepes in 2016.</p><p>Meanwhile, Vitalik’s blockchain alternative in Ethereum, which was created in 2014, fostered the rise of smart contract solutions that drove the growth of the cryptocurrency industry and spawned the creation of thousands of tokens. NFTs such as CryptoKitties in 2017 and the many well-known digital art and gaming-related collections today currently define what NFTs are in the public eye.</p><p>Back in the Bitcoin ecosystem, it would take until January 2023 for developers to introduce a major breakthough in NFT creation on the blockchain of the world’s top cryptocurrency. Introduced by Casey Rodarmor, Ordinals would take the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.rightclicksave.com/article/joe-looney-on-ordinals">good parts of Colored Coins and Counterparty</a> and push them together in a very interesting way. Ordinals improve upon the previous NFT-related projects on Bitcoin in multiple ways:</p><ul><li><p><strong>Standalone software</strong></p></li></ul><p>The Ordinals indexer is very similar to Counterparty, with its own software running in tandem with a Bitcoin node. This federated way of creating and indexing ordinals increased efficiency and took care of the scaling problems that Colored Coins faced in terms of having to verify each historical transaction.</p><ul><li><p><strong>More efficient way to store metadata</strong></p></li></ul><p>A Colored Coins transaction is usually stored in one of the outputs using the <em>OP_RETURN</em> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/bitcoinbook/bitcoinbook/blob/f318dcf7f76c72b05cb0b3bdb71e7088b3488b1d/ch12.asciidoc">opcode</a>. To improve upon this existing technology, Ordinal introduced the idea of Inscriptions, or the process to connect sats with arbitrary content. Inscription content is entirely on-chain and stored in taproot script-path spend scripts. Taproot scripts have very few restrictions on their content and additionally receive the witness discount, making inscription content storage relatively <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ordinals.com/inscriptions.html"><strong>economical</strong></a><strong>.</strong></p><ul><li><p><strong>Better indexing design</strong></p></li></ul><p>Ordinals’ <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/casey/ord">codebase</a> includes an indexer that suppors fast queries related to ordinals, a process that would otherwise have been slow to build whileconsuming large amounts of space. In contrast, a Colored Coinsn indexer would need to communicate with a Bitcoin Core node to track the location of all satoshis.</p><p>The combination of these advantages makes Ordinals a major step in the creation of Bitcoin NFTs. Summing up the impact of Ordinals on the NFT conversation, Stacks developer and Hiro CEO Alex Miller said, “It’s super core to the Bitcoin ethos in that they basically took several different things and pieced them together in a way the original creators did not foresee or expect.”</p><p><strong>What If Vitalik Continued Working on Bitcoin NFTs?</strong></p><p>The creation of Ordinals presented the possibility of creating Bitcoin NFTs in a more efficient manner compared to its predecessor in Colored Coins. However, while the Ordinals project has emerged with significant improvements and community support, it still faces key unresolved issues related to scalability. More importantly, this innovation was created in the midst of a crypto landscape where Ethereum has become the widely preferred platform for creating and launching NFTs.</p><p>Looking back in history, it is quite interesting to see Ethereum’s creator become heavily involved in the Bitcoin origins of NFTs before ultimately moving on to create his own blockchain. It’s reasonable to think that Vitalik’s previous work on Bitcoin and Colored Coins shaped the foundations of Ethereum, which now offers a better framework for NFT creation through ease of development, stronger light-client properties, and more. In an alternate universe, Vitalik may have done more to expand the use cases of Bitcoin as NFTs and other utilities. But ultimately, his decision to break off from Bitcoin is a major factor in the rapid growth that crypto has seen in the years that have passed since he co-wrote the Colored Coins whitepaper.</p><h3 id="h-about-us" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">About us</h3><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2e9b33c3cc66fc58337198a6596354f264d8467f88b0b56cd870cac7df6092ba.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com">Artech Club</a>, dedicated to building a leading web3 education and media club. We are committed to contributing educational and valuable stories about the blockchain ecosystem and web3 world by Artech Media. We hope can deliver value and wisdom to this fascinating area and facilitate the flow of knowledge and value.</p><h3 id="h-make-yourself-heard" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Make yourself heard</h3><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in contributing content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our first sharing.</p><p>Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Twitter</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror</a> is the first step to joining the Artech Club!</p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/ba530a2498e6535052cd948960bb8e2905e4ffee1ced8f4f2799576d255555e1.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sui Move Lecture #7 Objects]]></title>
            <link>https://paragraph.com/@artechclub/sui-move-lecture-7-objects</link>
            <guid>UV2jiHdsdsDuEdINaU3s</guid>
            <pubDate>Thu, 25 May 2023 22:19:48 GMT</pubDate>
            <description><![CDATA[Working with Sui ObjectsIntroductionSui Move is a fully object-centric language. Transactions on Sui are expressed as operations where the inputs and outputs are both objects. As we briefly touched on this concept in this lecture, Sui objects are the basic unit of storage in Sui. It all starts from the struct keyword. Here is an examplestruct Transcript { history: u8, math: u8, literature: u8, } The above definition is a regular Move struct, but it is not a Sui object. In order to make a cust...]]></description>
            <content:encoded><![CDATA[<h2 id="h-working-with-sui-objects" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Working with Sui Objects</h2><h3 id="h-introduction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Introduction</h3><p>Sui Move is a fully <strong>object-centric</strong> language. Transactions on Sui are expressed as operations where the inputs and outputs are both objects. As we briefly touched on this concept in this lecture, Sui objects are the basic unit of storage in Sui. It all starts from the <code>struct</code> keyword.</p><p>Here is an example</p><pre data-type="codeBlock" text="struct Transcript {
    history: u8,
    math: u8,
    literature: u8,
}
"><code><span class="hljs-keyword">struct</span> <span class="hljs-title class_">Transcript</span> {
    history: <span class="hljs-type">u8</span>,
    math: <span class="hljs-type">u8</span>,
    literature: <span class="hljs-type">u8</span>,
}
</code></pre><p>The above definition is a regular Move struct, but it is not a Sui object. In order to make a custom Move type instantiate a Sui object in global storage, we need to add the <code>key</code> ability, and a globally unique <code>id: UID</code> field inside the struct definition.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/769a46e53aea5d692bb9518d7f03048e3816cae4da630eb3eb96faba6c5a2bbb.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-create-a-sui-object" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Create a Sui Object</h2><p>Creating a Sui object requires a unique ID, we use the <code>sui::object::new</code> function to create a new ID passing in the current <code>TxContext</code>.</p><p>In Sui, every object must have an owner, which can be either an address, another object, or &quot;shared&quot;. In our examples, we decided to make our new <code>transcriptObject</code> owned by the transaction sender, it is done using the <code>transfer</code> function of Sui framework and using <code>tx_context::sender</code> function to get the current entry call&apos;s sender&apos;s address.</p><pre data-type="codeBlock" text="public entry fun create(ctx: &amp;mut TxContext) {
        let object = CounterObject {
            id: object::new(ctx),
            value:0
        };
        transfer::public_transfer(object, tx_context::sender(ctx));
    }
"><code><span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">create</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
        let <span class="hljs-keyword">object</span> = CounterObject {
            id: <span class="hljs-keyword">object</span>::new(ctx),
            value:<span class="hljs-number">0</span>
        };
        transfer::public_transfer(<span class="hljs-keyword">object</span>, tx_context::sender(ctx));
    }
</code></pre><p>We will discuss object ownership more in-depth in the next section.</p><p><em>💡Note: Move supports field punning, which allows us to skip the field values if the field name happens to be the same as the name of the value variable it is bound to.</em></p><h2 id="h-ownership-of-sui-objects" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Ownership of Sui Objects</h2><p>Each object in Sui has an owner field that indicates how this object is being owned. In Sui Move, there are total of four types of ownership.</p><ul><li><p>Owned</p><ul><li><p>Owned by an address</p></li><li><p>Owned by another object</p></li></ul></li><li><p>Shared</p><ul><li><p>Shared immutable</p></li><li><p>Shared mutable</p></li></ul></li></ul><h3 id="h-owned-object" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Owned Object</h3><p>The first two types of ownership fall under the <code>Owned Objects</code> category. Owned objects in Sui are processed differently from shared objects and do not require global ordering.</p><p><strong>Owned by an address</strong></p><p>Let&apos;s continue using our <code>transcript</code> example here. This type of ownership is pretty straightforward as the object is owned by an address to which the object is transferred to upon object creation, such as in the above example at this line:</p><pre data-type="codeBlock" text="    transfer::transfer(transcriptObject, tx_context::sender(ctx)) // where tx_context::sender(ctx) is the recipient
"><code>    transfer::<span class="hljs-built_in">transfer</span>(transcriptObject, tx_context::<span class="hljs-built_in">sender</span>(ctx)) <span class="hljs-comment">// where tx_context::sender(ctx) is the recipient</span>
</code></pre><p>where the <code>transcriptObject</code> is transferred to the address of the transaction sender upon creation.</p><p><strong>Owned by an object</strong></p><p>In order for an object to be owned by another object, it is done using <code>dynamic_object_field</code>, which we will explore in a future section. Basically, when an object is owned by another object, we will call it a child object. A child object is able to be looked up in global storage using its object ID.</p><pre data-type="codeBlock" text="module sui::dynamic_field {

public fun add&lt;Name: copy + drop + store, Value: store&gt;(
  object: &amp;mut UID,
  name: Name,
  value: Value,
);
"><code>module sui::dynamic_field {

<span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> add<span class="hljs-type">&#x3C;Name: copy + drop + store, Value: store></span><span class="hljs-params">(
  <span class="hljs-keyword">object</span>: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">UID</span>,
  name: <span class="hljs-type">Name</span>,
  value: <span class="hljs-type">Value</span>,
)</span></span>;
</code></pre><h2 id="h-shared-objects" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Shared Objects</h2><p><strong>Shared Immutable Objects</strong></p><p>Certain objects in Sui cannot be mutated by anyone, and because of this, these objects do not have an exclusive owner. All published packages and modules in Sui are immutable objects.</p><p>To make an object immutable manually, one can call the following special function:</p><pre data-type="codeBlock" text="    transfer::freeze_object(obj);
"><code>    transfer::<span class="hljs-built_in">freeze_object</span>(obj);
</code></pre><p><strong>Shared Mutable Objects</strong></p><p>Shared objects in Sui can be read or mutated by anyone. Shared object transactions require global ordering through a consensus layer protocol, unliked owned objects.</p><p>To create a shared object, one can call this method:</p><pre data-type="codeBlock" text="    transfer::share_object(obj);
"><code>    transfer::<span class="hljs-built_in">share_object</span>(obj);
</code></pre><p>Once an object is shared, it stays mutable and can be accessed by anyone to send a transaction to mutate the object.</p><p>Coming up: Parameter Passing and Object Deletion</p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e58c64ad69b115650d65ce5a4de0f57b87359ea8268a602554d533a60535a6be.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Move Lecture #6 Unit Test]]></title>
            <link>https://paragraph.com/@artechclub/move-lecture-6-unit-test</link>
            <guid>4mFjsaUfo2FYsdZvA6xH</guid>
            <pubDate>Tue, 23 May 2023 19:54:12 GMT</pubDate>
            <description><![CDATA[Hello, everyone! In today’s lecture, we will discuss the Sui Move unit test. Following our previous lectures, you should have a general idea about how to code with Sui Move. If you didn’t read the previous lectures, check out here.Why do we need unit test?Unit tests are necessary for smart contracts because they:Ensure correctness: By writing unit tests, developers can verify that their smart contracts perform as intended and handle various scenarios correctly.Identify bugs and vulnerabilitie...]]></description>
            <content:encoded><![CDATA[<p>Hello, everyone! In today’s lecture, we will discuss the Sui Move unit test. Following our previous lectures, you should have a general idea about how to code with Sui Move.</p><p>If you didn’t read the previous lectures, check out <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/DdRxc2eTPSjvgkBtlmrV5DSZg0UqkKqjWUXVnezA2rM">here</a>.</p><h2 id="h-why-do-we-need-unit-test" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Why do we need unit test?</h2><p>Unit tests are necessary for smart contracts because they:</p><ol><li><p><strong>Ensure correctness</strong>: By writing unit tests, developers can verify that their smart contracts perform as intended and handle various scenarios correctly.</p></li><li><p><strong>Identify bugs and vulnerabilities</strong>: Unit tests help uncover errors, bugs, and vulnerabilities in smart contracts, allowing developers to fix them before deployment.</p></li><li><p><strong>Facilitate maintenance and upgrades</strong>: Well-written unit tests make it easier to maintain and upgrade smart contracts over time, as they provide a safety net for detecting regressions.</p></li><li><p><strong>Aid collaboration</strong>: Unit tests serve as documentation and examples of how smart contracts should be used, facilitating collaboration among developers and enabling others to understand contract functionality quickly.</p></li></ol><h2 id="h-basics-of-sui-move-unit-test" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Basics of Sui Move Unit Test</h2><p>Here is an example.</p><pre data-type="codeBlock" text="module my_pkg::add {
  #[test_only] // Annotating Data Only Used in Tests
  const EAddTestError: u64 = 0;
  
  public fun add(a: u64, b: u64): u64 {
    a + b
  }
  
  #[test] // Adding the &quot;test&quot; Label to Identify Test Cases
  fun test_add() {
    assert!(add(4, 5) == 9, EAddTestError);
  }
}
"><code>module my_pkg::add {
  #[test_only] <span class="hljs-comment">// Annotating Data Only Used in Tests</span>
  <span class="hljs-keyword">const</span> EAddTestError: u64 = <span class="hljs-number">0</span>;
  
  <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">add</span><span class="hljs-params">(a: <span class="hljs-type">u64</span>, b: <span class="hljs-type">u64</span>)</span></span>: u64 {
    a + b
  }
  
  #[test] <span class="hljs-comment">// Adding the "test" Label to Identify Test Cases</span>
  <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">test_add</span><span class="hljs-params">()</span></span> {
    assert!(add(<span class="hljs-number">4</span>, <span class="hljs-number">5</span>) == <span class="hljs-number">9</span>, EAddTestError);
  }
}
</code></pre><p>Unit test command: <code>sui move test --path &lt;pkg_path&gt;</code></p><p>If the command executes without any errors, it indicates that the test case has passed.</p><p>Workflow:</p><ol><li><p>Write a test method: Create a method specifically for testing the functionality you want to verify. Make sure to label it with the appropriate test tag, such as <code>@Test</code> (depending on the testing framework you&apos;re using).</p></li><li><p>Invoke the method under test and evaluate the results: Call the method or functionality you want to test and assess whether the outcome aligns with your expectations. You can use assertions or comparisons to validate the expected behavior.</p></li><li><p>Run the test command: Execute the test command provided by your testing framework or tool. This command will run all the test methods with the designated test labels and report the results, indicating whether each test passed or failed.</p></li></ol><h2 id="h-advanced-unit-test-part-1" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Advanced Unit Test Part 1</h2><p>Sometimes, when programming, you may encounter bugs that are difficult to locate. Let&apos;s make some modifications to the example above.</p><pre data-type="codeBlock" text="module my_pkg::add {
  ...
  use std::debug; // import debug module
  
  public fun add(a: u64, b: u64): u64 {
    let res = a + b;
    debug::print(&amp;res); // print add result
    res
  }
  ...
}
"><code>module my_pkg::add {
  ...
  use std::debug; <span class="hljs-comment">// import debug module</span>
  
  <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">add</span><span class="hljs-params">(a: <span class="hljs-type">u64</span>, b: <span class="hljs-type">u64</span>)</span></span>: u64 {
    let res = a + b;
    debug::print(&#x26;res); <span class="hljs-comment">// print add result</span>
    res
  }
  ...
}
</code></pre><p>If you run the test again, you can see the result <code>[debug] 9</code></p><h2 id="h-advanced-unit-test-part-2" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Advanced Unit Test Part 2</h2><p>Let’s use <code>Test Scenario</code> to simulate user interactions.</p><pre data-type="codeBlock" text="// Copyright (c) 2022, Sui Foundation
// SPDX-License-Identifier: Apache-2.0

module counter::counter {

    use sui::object::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

    #[test_only]
    use sui::test_scenario;
    #[test_only]
    const EAddIncrementError: u64 = 0;
  

    /// An object that contains an arbitrary string
    struct CounterObject has key, store {
        id: UID,
        /// A string contained in the object
        value: u64
    }

    public entry fun create(ctx: &amp;mut TxContext) {
        let object = CounterObject {
            id: object::new(ctx),
            value:0
        };
        transfer::public_transfer(object, tx_context::sender(ctx));
    }
  
    public entry fun increment(counter: &amp;mut CounterObject) {
        counter.value = counter.value + 1;
    }
    public entry fun setValue(counter: &amp;mut CounterObject, number:u64) {
        counter.value = number;
    }

    #[test_only]
    public fun init_test(ctx: &amp;mut TxContext) {
        transfer::share_object( CounterObject { id: object::new(ctx), value: 0 } )
    }
  
    #[test]
    fun test_increment() {
        let user = @0x0; // 
        let senario_val = test_scenario::begin(user);
        let senario = &amp;mut senario_val; 
        init_test(test_scenario::ctx(senario)); // 
        test_scenario::next_tx(senario, user); // 
        let counter = test_scenario::take_shared&lt;CounterObject&gt;(senario); // 
        assert!(counter.value == 0, 0); // 
        increment(&amp;mut counter); // 
        assert!(counter.value == 1, 0); // 
        test_scenario::return_shared(counter);
        test_scenario::end(senario_val);
  }

}
"><code><span class="hljs-comment">// Copyright (c) 2022, Sui Foundation</span>
<span class="hljs-comment">// SPDX-License-Identifier: Apache-2.0</span>

module counter::counter {

    use sui::<span class="hljs-keyword">object</span>::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

    #[test_only]
    use sui::test_scenario;
    #[test_only]
    <span class="hljs-keyword">const</span> EAddIncrementError: u64 = <span class="hljs-number">0</span>;
  

    <span class="hljs-comment">/// An object that contains an arbitrary string</span>
    struct CounterObject has key, store {
        id: UID,
        <span class="hljs-comment">/// A string contained in the object</span>
        value: u64
    }

    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">create</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
        let <span class="hljs-keyword">object</span> = CounterObject {
            id: <span class="hljs-keyword">object</span>::new(ctx),
            value:<span class="hljs-number">0</span>
        };
        transfer::public_transfer(<span class="hljs-keyword">object</span>, tx_context::sender(ctx));
    }
  
    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">increment</span><span class="hljs-params">(counter: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">CounterObject</span>)</span></span> {
        counter.value = counter.value + <span class="hljs-number">1</span>;
    }
    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">setValue</span><span class="hljs-params">(counter: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">CounterObject</span>, number:<span class="hljs-type">u64</span>)</span></span> {
        counter.value = number;
    }

    #[test_only]
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">init_test</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
        transfer::share_object( CounterObject { id: <span class="hljs-keyword">object</span>::new(ctx), value: <span class="hljs-number">0</span> } )
    }
  
    #[test]
    <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">test_increment</span><span class="hljs-params">()</span></span> {
        let user = @<span class="hljs-number">0x0</span>; <span class="hljs-comment">// </span>
        let senario_val = test_scenario::begin(user);
        let senario = &#x26;mut senario_val; 
        init_test(test_scenario::ctx(senario)); <span class="hljs-comment">// </span>
        test_scenario::next_tx(senario, user); <span class="hljs-comment">// </span>
        let counter = test_scenario::take_shared&#x3C;CounterObject>(senario); <span class="hljs-comment">// </span>
        assert!(counter.value == <span class="hljs-number">0</span>, <span class="hljs-number">0</span>); <span class="hljs-comment">// </span>
        increment(&#x26;mut counter); <span class="hljs-comment">// </span>
        assert!(counter.value == <span class="hljs-number">1</span>, <span class="hljs-number">0</span>); <span class="hljs-comment">// </span>
        test_scenario::return_shared(counter);
        test_scenario::end(senario_val);
  }

}
</code></pre><p>If you run the test, you will see an error</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5354bdb7a00ea0cb64fec0ddbd673f4832091a8311746ade7815398e5a2ebf7a.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>This is because the object is not handled correctly after the test. Add the following lines to fix the problem.</p><pre data-type="codeBlock" text="#[test]
...
  fun test_increment() {
    ...
    test_scenario::return_shared(counter);
    test_scenario::end(senario_val);
  }
...
"><code>#[test]
...
  <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">test_increment</span><span class="hljs-params">()</span></span> {
    ...
    test_scenario::return_shared(counter);
    test_scenario::end(senario_val);
  }
...
</code></pre><p>If we run again, the test cases will pass.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e32c263a3e5bb67860b56e5897da49f303450904923fd9124410edb715be6259.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-advanced-unit-test-part-3-separating-testing-logic-from-business-logic" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Advanced Unit Test Part 3: Separating Testing Logic from Business Logic</h2><p>In more complex scenarios, separating the test cases into dedicated test modules or files can improve code organization and readability. Below is an example of extracting the <code>counter</code> test cases into a separate module called <code>counter_test</code>, focusing solely on the testing logic:</p><pre data-type="codeBlock" text="// Copyright (c) 2022, Sui Foundation
// SPDX-License-Identifier: Apache-2.0

module counter::counter {

    use sui::object::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

 
    /// An object that contains an arbitrary string
    struct CounterObject has key, store {
        id: UID,
        /// A string contained in the object
        value: u64
    }

    public entry fun create(ctx: &amp;mut TxContext) {
        let object = CounterObject {
            id: object::new(ctx),
            value:0
        };
        transfer::public_transfer(object, tx_context::sender(ctx));
    }
  
    public entry fun increment(counter: &amp;mut CounterObject) {
        counter.value = counter.value + 1;
    }
    public entry fun setValue(counter: &amp;mut CounterObject, number:u64) {
        counter.value = number;
    }

    #[test_only]
    public fun init_test(ctx: &amp;mut TxContext) {
        transfer::share_object( CounterObject { id: object::new(ctx), value: 0 } )
    }
 

}
"><code><span class="hljs-comment">// Copyright (c) 2022, Sui Foundation</span>
<span class="hljs-comment">// SPDX-License-Identifier: Apache-2.0</span>

module counter::counter {

    use sui::<span class="hljs-keyword">object</span>::{Self, UID};
    use sui::transfer;
    use sui::tx_context::{Self, TxContext};

 
    <span class="hljs-comment">/// An object that contains an arbitrary string</span>
    struct CounterObject has key, store {
        id: UID,
        <span class="hljs-comment">/// A string contained in the object</span>
        value: u64
    }

    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">create</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
        let <span class="hljs-keyword">object</span> = CounterObject {
            id: <span class="hljs-keyword">object</span>::new(ctx),
            value:<span class="hljs-number">0</span>
        };
        transfer::public_transfer(<span class="hljs-keyword">object</span>, tx_context::sender(ctx));
    }
  
    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">increment</span><span class="hljs-params">(counter: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">CounterObject</span>)</span></span> {
        counter.value = counter.value + <span class="hljs-number">1</span>;
    }
    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">setValue</span><span class="hljs-params">(counter: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">CounterObject</span>, number:<span class="hljs-type">u64</span>)</span></span> {
        counter.value = number;
    }

    #[test_only]
    <span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">init_test</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
        transfer::share_object( CounterObject { id: <span class="hljs-keyword">object</span>::new(ctx), value: <span class="hljs-number">0</span> } )
    }
 

}
</code></pre><p>Create a new `counter_test` module</p><pre data-type="codeBlock" text="#[test_only]
module my_pkg::counter_test {
  use sui::test_scenario;
  use my_pkg::counter::{Self, Counter};
  const EAddIncrementError: u64 = 0;
  
  #[test]
  fun test_increment() {
    let user = @0x0;
    let senario_val = test_scenario::begin(user);
    let senario = &amp;mut senario_val;
    counter::init_test(test_scenario::ctx(senario));
    test_scenario::next_tx(senario, user);
    let counter = test_scenario::take_shared&lt;Counter&gt;(senario);
    assert!(counter::value(&amp;counter) == 0, EAddIncrementError);
    counter::increment(&amp;mut counter);
    assert!(counter::value(&amp;counter) == 1, EAddIncrementError);
    
    test_scenario::return_shared(counter);
    test_scenario::end(senario_val);
  }
}
"><code><span class="hljs-meta">#[test_only]</span>
module my_pkg::counter_test {
  <span class="hljs-keyword">use</span> sui::test_scenario;
  <span class="hljs-keyword">use</span> my_pkg::counter::{<span class="hljs-keyword">Self</span>, Counter};
  <span class="hljs-keyword">const</span> EAddIncrementError: <span class="hljs-type">u64</span> = <span class="hljs-number">0</span>;
  
  <span class="hljs-meta">#[test]</span>
  fun <span class="hljs-title function_ invoke__">test_increment</span>() {
    <span class="hljs-keyword">let</span> <span class="hljs-variable">user</span> = @<span class="hljs-number">0x0</span>;
    <span class="hljs-keyword">let</span> <span class="hljs-variable">senario_val</span> = test_scenario::<span class="hljs-title function_ invoke__">begin</span>(user);
    <span class="hljs-keyword">let</span> <span class="hljs-variable">senario</span> = &#x26;<span class="hljs-keyword">mut</span> senario_val;
    counter::<span class="hljs-title function_ invoke__">init_test</span>(test_scenario::<span class="hljs-title function_ invoke__">ctx</span>(senario));
    test_scenario::<span class="hljs-title function_ invoke__">next_tx</span>(senario, user);
    <span class="hljs-keyword">let</span> <span class="hljs-variable">counter</span> = test_scenario::take_shared&#x3C;Counter>(senario);
    <span class="hljs-built_in">assert!</span>(counter::<span class="hljs-title function_ invoke__">value</span>(&#x26;counter) == <span class="hljs-number">0</span>, EAddIncrementError);
    counter::<span class="hljs-title function_ invoke__">increment</span>(&#x26;<span class="hljs-keyword">mut</span> counter);
    <span class="hljs-built_in">assert!</span>(counter::<span class="hljs-title function_ invoke__">value</span>(&#x26;counter) == <span class="hljs-number">1</span>, EAddIncrementError);
    
    test_scenario::<span class="hljs-title function_ invoke__">return_shared</span>(counter);
    test_scenario::<span class="hljs-title function_ invoke__">end</span>(senario_val);
  }
}
</code></pre><p>By separating testing logic from business logic, you can maintain code clarity, improve readability, and make it easier to maintain and update your tests as your project evolves.</p><h2 id="h-in-conclusion" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">In conclusion</h2><p>This tutorial analyzes the fundamental testing process and common advanced testing concepts that can be applied to small to medium-scale Sui Move contract development. Based on our development experience, as the complexity of the application increases, testing tasks become more challenging. Therefore, it is essential to enhance the reusability of testing logic by:</p><ol><li><p>Encapsulating Generic Testing Logic: For instance, referring to web2 testing and utilizing existing testing frameworks.</p></li><li><p>Reusing Business-Level Testing Logic: Many testing scenarios, setups, and teardowns can be reused.</p></li></ol>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/d0ea908bc69b79c30b853a2a11a35bc2212df70aeaa9afbf1bc4374d1d776dad.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sui Move Lecture #3 Types and Abilities]]></title>
            <link>https://paragraph.com/@artechclub/sui-move-lecture-3-types-and-abilities</link>
            <guid>acpu33OfP0zn6ZXPZDHU</guid>
            <pubDate>Fri, 19 May 2023 01:51:11 GMT</pubDate>
            <description><![CDATA[In this lecture, we will learn about types and abilities. We will start with creating our Hello World demo contract step by step and explain fundamental concepts in Sui Move as they come up, such as custom types and abilities.Initializing the Package(If you skipped the previous section) You can initialize a Hello World Sui package with the following command in the command line after installing Sui binaries:sui move new hello_world Create the Contract Source FileUse an editor of your choice to...]]></description>
            <content:encoded><![CDATA[<p>In this lecture, we will learn about <code>types</code> and <code>abilities</code>.</p><p>We will start with creating our <code>Hello World</code> demo contract step by step and explain fundamental concepts in Sui Move as they come up, such as custom types and abilities.</p><h3 id="h-initializing-the-package" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Initializing the Package</h3><p>(If you skipped the previous section) You can initialize a <code>Hello World</code> Sui package with the following command in the command line after <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/DdRxc2eTPSjvgkBtlmrV5DSZg0UqkKqjWUXVnezA2rM">installing Sui binaries</a>:</p><pre data-type="codeBlock" text="sui move new hello_world
"><code>sui move <span class="hljs-keyword">new</span> hello_world
</code></pre><h2 id="h-create-the-contract-source-file" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Create the Contract Source File</h2><p>Use an editor of your choice to create a Move smart contract source file called hello.move under the sources subfolder.</p><p>And create the empty module as following:</p><pre data-type="codeBlock" text="module hello_world::hello { 
   // module contents 
}
"><code><span class="hljs-keyword">module</span> hello_world::hello { 
   <span class="hljs-regexp">//</span> <span class="hljs-keyword">module</span> contents 
}
</code></pre><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>Import Statements</p><p>You can directly import modules in Move by their address, but to make code easier to read, we can organize imports with the keyword use.</p><pre data-type="codeBlock" text="use &lt;Address/Alias&gt;::&lt;ModuleName&gt;; 
"><code>use <span class="hljs-operator">&#x3C;</span>Address<span class="hljs-operator">/</span>Alias<span class="hljs-operator">></span>::<span class="hljs-operator">&#x3C;</span>ModuleName<span class="hljs-operator">></span>; 
</code></pre><p>In our example, we need to import the following modules:</p><pre data-type="codeBlock" text="use std::string; 
use sui::object::{Self, UID}; 
use sui::transfer; 
use sui::tx_context::{Self, TxContext};
"><code><span class="hljs-keyword">use</span> std::string; 
<span class="hljs-keyword">use</span> sui::object::{<span class="hljs-keyword">Self</span>, UID}; 
<span class="hljs-keyword">use</span> sui::transfer; 
<span class="hljs-keyword">use</span> sui::tx_context::{<span class="hljs-keyword">Self</span>, TxContext};
</code></pre><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>Custom Types</p><p>A structure in Sui Move is a custom type that contains key-value pairs, where the key is the name of a property and the value is what&apos;s stored. Defined using keyword struct, a structure can have up to 4 abilities.</p><h3 id="h-abilities" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Abilities</h3><p>Abilities are keywords in Sui Move that define how types behave at the compiler level.</p><p>Abilities are crucial to defining how object behave in Sui Move at the language level. Each unique combination of abilities in Sui Move is its own design pattern. We will study abitilies and how to use them in Sui Move throughout the course.</p><p>For now, just know that there are four abilities in Sui Move:</p><ul><li><p><strong>Copy</strong>: value can be copied (or cloned by value)</p></li><li><p><strong>Drop</strong>: value can be dropped by the end of scope</p></li><li><p><strong>Key</strong>: value can be used as a key for global storage operations</p></li><li><p><strong>Store</strong>: value can be stored inside global storage</p></li></ul><p>Custom types that have the abilities <code>key</code> and <code>store</code> are considered to be <strong>assets</strong> in Sui Move. Assets are stored in global storage and can be transferred between accounts.</p><h3 id="h-hello-world-custom-type" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Hello World Custom Type</h3><p>We define the object in our Hello World example as the following:</p><pre data-type="codeBlock" text="/// An object that contains an arbitrary string
struct HelloWorldObject has key, store {
      id: UID,
      /// A string contained in the object
      text: string::String
}
"><code><span class="hljs-comment">/// An object that contains an arbitrary string</span>
<span class="hljs-keyword">struct</span> <span class="hljs-title class_">HelloWorldObject</span> has key, store {
      id: UID,
      <span class="hljs-comment">/// A string contained in the object</span>
      text: string::<span class="hljs-type">String</span>
}
</code></pre><p>UID here is a Sui Framework type (sui::object::UID) that defines the globally unique ID of an object. Any custom type with the <code>key</code> ability is required to have an ID field.</p><p>example</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/seapad-fund/sui-contracts/blob/1d062984acdc53916001bcedc7b103f577a6112b/nft/sources/nftbox.move#L147">https://github.com/seapad-fund/sui-contracts/blob/1d062984acdc53916001bcedc7b103f577a6112b/nft/sources/nftbox.move#L147</a></p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div><p>Rederence</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/3_custom_types_and_abilities.md">https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/3_custom_types_and_abilities.md</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/44c75c6ac66a13981b693a0626a19d1901dfaadfbc1369d0c59702408e30f275.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sui Move Lecture #5 Hello World Demo]]></title>
            <link>https://paragraph.com/@artechclub/sui-move-lecture-5-hello-world-demo</link>
            <guid>At69tgHdY9ooN0W3B3Qp</guid>
            <pubDate>Thu, 18 May 2023 16:17:14 GMT</pubDate>
            <description><![CDATA[Following the introduction of lectures, let’s try to develop our first Sui demo in this tutorial. The demo code can be found here: https://github.com/sui-foundation/sui-move-intro-course/tree/main/unit-one/example_projects/hello_worldDeploying Move ContractWe will use the Sui CLI to deploy the package to the Sui devnet. You can deploy it to either the Sui devnet, testnet or the local node. Just set the Sui CLI to the respective network and have enough tokens to pay for gas. The Sui CLI comman...]]></description>
            <content:encoded><![CDATA[<p>Following the introduction of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/K52lS1remPWJd93DE_bk1VrhKzodKqqw-kz6goKK9NI">lecture</a>s, let’s try to develop our first Sui demo in this tutorial.</p><p>The demo code can be found here:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sui-foundation/sui-move-intro-course/tree/main/unit-one/example_projects/hello_world">https://github.com/sui-foundation/sui-move-intro-course/tree/main/unit-one/example_projects/hello_world</a></p><h2 id="h-deploying-move-contract" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Deploying Move Contract</h2><p>We will use the <code>Sui CLI</code> to deploy the package to the Sui devnet. You can deploy it to either the Sui devnet, testnet or the local node. Just set the Sui CLI to the respective network and have enough tokens to pay for gas.</p><p>The Sui CLI command for deploying the package is the following:</p><pre data-type="codeBlock" text="sui client publish --gas-budget &lt;gas_budget&gt; [absolute file path to the package that needs to be published] 
"><code>sui client publish <span class="hljs-operator">-</span><span class="hljs-operator">-</span>gas<span class="hljs-operator">-</span>budget <span class="hljs-operator">&#x3C;</span>gas_budget<span class="hljs-operator">></span> [absolute file path to the package that needs to be published] 
</code></pre><p>For the gas_budget, we can use a standard value like 10000000.</p><p>If the absolute file path to the package is not provided, it will default to the current directory.</p><p>The output should look something like this if the contract was successfully deployed:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/f7fd0c081842a3e4b5bdf45c108f36604b3a671abefd77b7585f61f8001e6095.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-deploy-package-using-a-specific-gas-object" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Deploy package using a specific gas object</h3><pre data-type="codeBlock" text="hello_world % sui client publish --gas-budget 10000000 --gas 0x3e19bf4d4e1324d89ca11563d9e6e0c84928e2139bd52d5fd32397a535890fb3
"><code>hello_world <span class="hljs-operator">%</span> sui client publish <span class="hljs-operator">-</span><span class="hljs-operator">-</span>gas<span class="hljs-operator">-</span>budget <span class="hljs-number">10000000</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>gas <span class="hljs-number">0x3e19bf4d4e1324d89ca11563d9e6e0c84928e2139bd52d5fd32397a535890fb3</span>
</code></pre><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0c62fb4a38c7493620b488d4036d88f727113cc129e937085b8ce38b27c575e2.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>You can notice the change of balance.</p><p>Example output:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/dd2b54b391e67e3931f40788d72f22cb3ad4fd8f78188feff0ebe274fc2da036.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>Congratulations! You have deployed your first package to Devnet!</p><p>The object ID under the Created Objects section is the object ID of the Hello World package we just published.</p><p>Let&apos;s export that to a variable.</p><pre data-type="codeBlock" text="export PACKAGE_ID=&lt;package object ID from previous output&gt;
"><code>export PACKAGE_ID<span class="hljs-operator">=</span><span class="hljs-operator">&#x3C;</span>package object ID <span class="hljs-keyword">from</span> previous output<span class="hljs-operator">></span>
</code></pre><h3 id="h-calling-a-method-through-a-transaction" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Calling a Method through a Transaction</h3><p>Next, we want to mint a Hello World object by calling the mint function in the smart contract we just deployed.</p><p>Note that we are able to do this because mint is an entry function.</p><p>The command for this using Sui CLI is:</p><pre data-type="codeBlock" text="sui client call --function mint --module hello_world --package $PACKAGE_ID --gas-budget 10000000
"><code>sui client call <span class="hljs-attr">--function</span> mint <span class="hljs-attr">--module</span> hello_world <span class="hljs-attr">--package</span> $PACKAGE_ID <span class="hljs-attr">--gas-budget</span> <span class="hljs-number">10000000</span>
</code></pre><p>The console output should look like this if the mint function was successfully called, and a Hello World object was created and transferred:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ee90b3cdb6023d5f60dcc242ce5541aab20852f19392e0eb29f8b5dd9fa538f1.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>The object ID under the <code>Created Objects</code> section of the output is the ID of the Hello World object.</p><h3 id="h-viewing-the-object-with-sui-explorer" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Viewing the Object with Sui Explorer</h3><p>Let&apos;s use the Sui Explorer to view the Hello World object we just created and transferred.</p><p>Choose the network you are using through the dropdown menu on the upper right.</p><p>If you are using a local dev node, select the Custom RPC URL option and enter:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://127.0.0.1:9000">http://127.0.0.1:9000</a> Search for the object ID from the output of the previous transaction and you should be able to find the object on the explorer:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/73766c0250a1255279806dab56f9fb6619743866f2521ca4494225d0f37ff825.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>You should see the text &quot;Hello World!&quot; under the object&apos;s properties.</p><p>Well done! You have completed deployed your first Move contract!</p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/e096688aed6f43269c38eec507f3e80750bca4d4765937d5ab2e6f5a3a891968.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sui Move Lecture #4 Functions and strings]]></title>
            <link>https://paragraph.com/@artechclub/sui-move-lecture-4-functions-and-strings</link>
            <guid>IzkXSM5cRbHnPocQhjCd</guid>
            <pubDate>Thu, 18 May 2023 16:06:56 GMT</pubDate>
            <description><![CDATA[In this lecture, we will talk about functions and strings in Sui Move. You can see the public functions of any packages with explorer.public functionsFunction VisibilitySui Move functions have three types of visibility:private: the default visibility of a function; it can only be accessed by functions inside the same modulepublic: the function is accessible by functions inside the same module, and by functions defined in another modulepublic(friend): the function is accessible by functions in...]]></description>
            <content:encoded><![CDATA[<p>In this lecture, we will talk about <code>functions</code> and <code>strings</code> in Sui Move.</p><p>You can see the public functions of any packages with explorer.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0dbcfebfe78ec361551fb42a9f2e936f223db26b4acb0af0fbecd6e743f0b0b5.png" alt="public functions" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">public functions</figcaption></figure><h2 id="h-function-visibility" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Function Visibility</h2><p>Sui Move functions have three types of visibility:</p><ul><li><p><strong>private</strong>: the default visibility of a function; it can only be accessed by functions inside the same module</p></li><li><p><strong>public</strong>: the function is accessible by functions inside the same module, and by functions defined in another module</p></li><li><p><strong>public(friend)</strong>: the function is accessible by functions inside the same module and by functions defined in modules that are included on the module&apos;s <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://diem.github.io/move/friends.html">friends list.</a></p><h3 id="h-return-value" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Return Value</h3><p>The return type of a function is specified in the function signature after the function parameters, separated by a colon.</p></li></ul><p>A function&apos;s last line (of execution) without a semicolon is the return value.</p><p>Example:</p><pre data-type="codeBlock" text="public fun addition (a: u8, b: u8): u8 {
    a + b    
}
"><code><span class="hljs-keyword">public</span> <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">addition</span> <span class="hljs-params">(a: <span class="hljs-type">u8</span>, b: <span class="hljs-type">u8</span>)</span></span>: u8 {
    a + b    
}
</code></pre><h3 id="h-entry-functions" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Entry Functions</h3><p>In Sui Move, entry functions are simply functions that can be called by a transactions. They must satisfy the following three requirements:</p><ul><li><p>Denoted by the keyword <code>entry</code></p></li><li><p>have no return value</p></li><li><p>(optional) have a mutable reference to an instance of the <code>TxContext</code> type in the last parameter</p><p>example:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/seapad-fund/sui-contracts/blob/master/nft/sources/nftbox_entries.move">https://github.com/seapad-fund/sui-contracts/blob/master/nft/sources/nftbox_entries.move</a></p><h3 id="h-transaction-context" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Transaction Context</h3><p>Entry functions typically have an instance of <code>TxContext</code> as the last parameter. This is a special parameter set by the Sui Move VM, and does not need to be specified by the user calling the function.</p></li></ul><p>The <code>TxContext</code> object contains <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/MystenLabs/sui/blob/main/crates/sui-framework/packages/sui-framework/sources/tx_context.move">essential information</a> about the transaction used to call the entry function, such as:</p><ul><li><p>the sender&apos;s address</p></li><li><p>the signer&apos;s address</p></li><li><p>the tx&apos;s epoch, etc.</p></li></ul><h3 id="h-create-the-mint-function" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Create the mint Function</h3><p>We can define our minting function in the Hello World example as the following:</p><pre data-type="codeBlock" text="public entry fun mint(ctx: &amp;mut TxContext) {
    let object = HelloWorldObject {
        id: object::new(ctx),
        text: string::utf8(b&quot;Hello World!&quot;)
    };
    transfer::transfer(object, tx_context::sender(ctx));
}
"><code><span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">mint</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
    let <span class="hljs-keyword">object</span> = HelloWorldObject {
        id: <span class="hljs-keyword">object</span>::new(ctx),
        text: string::utf8(b<span class="hljs-string">"Hello World!"</span>)
    };
    transfer::transfer(<span class="hljs-keyword">object</span>, tx_context::sender(ctx));
}
</code></pre><p>This function simply creates a new instance of the <code>HelloWorldObject</code> custom type, then uses the Sui system transfer function to send it to the transaction caller.</p><p>Example:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/seapad-fund/sui-contracts/blob/1d062984acdc53916001bcedc7b103f577a6112b/nft/sources/nftbox.move#L405">https://github.com/seapad-fund/sui-contracts/blob/1d062984acdc53916001bcedc7b103f577a6112b/nft/sources/nftbox.move#L405</a></p><h2 id="h-string" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">String</h2><p>Move does not have primitive string type, but it has a package to handle it.</p><pre data-type="codeBlock" text="module examples::strings {
    use sui::object::{Self, UID};
    use sui::tx_context::TxContext;

    // import dependency
    use std::string::{Self, String};

    // an Object with a string
    struct Name has key, store {
        id: UID,

        /// Here it is - the String type
        name: String
    }

    // create a new Name Object with raw bytes
    public fun issue_name_nft(
        name_bytes: vector&lt;u8&gt;, ctx: &amp;mut TxContext
    ): Name {
        Name {
            id: object::new(ctx),
            name: string::utf8(name_bytes)
        }
    }
}
"><code>module examples::strings {
    <span class="hljs-keyword">use</span> sui::object::{<span class="hljs-keyword">Self</span>, UID};
    <span class="hljs-keyword">use</span> sui::tx_context::TxContext;

    <span class="hljs-comment">// import dependency</span>
    <span class="hljs-keyword">use</span> std::string::{<span class="hljs-keyword">Self</span>, <span class="hljs-type">String</span>};

    <span class="hljs-comment">// an Object with a string</span>
    <span class="hljs-keyword">struct</span> <span class="hljs-title class_">Name</span> has key, store {
        id: UID,

        <span class="hljs-comment">/// Here it is - the String type</span>
        name: <span class="hljs-type">String</span>
    }

    <span class="hljs-comment">// create a new Name Object with raw bytes</span>
    public fun <span class="hljs-title function_ invoke__">issue_name_nft</span>(
        name_bytes: vector&#x3C;<span class="hljs-type">u8</span>>, ctx: &#x26;<span class="hljs-keyword">mut</span> TxContext
    ): Name {
        Name {
            id: object::<span class="hljs-title function_ invoke__">new</span>(ctx),
            name: string::<span class="hljs-title function_ invoke__">utf8</span>(name_bytes)
        }
    }
}
</code></pre><p>The <code>hello world</code> example used string as well.</p><pre data-type="codeBlock" text="    public entry fun mint(ctx: &amp;mut TxContext) {
        let object = HelloWorldObject {
            id: object::new(ctx),

        // Here
            text: string::utf8(b&quot;Hello World!&quot;)
        };
        transfer::transfer(object, tx_context::sender(ctx));
    }
"><code>    <span class="hljs-keyword">public</span> entry <span class="hljs-function"><span class="hljs-keyword">fun</span> <span class="hljs-title">mint</span><span class="hljs-params">(ctx: &#x26;<span class="hljs-type">mut</span> <span class="hljs-type">TxContext</span>)</span></span> {
        let <span class="hljs-keyword">object</span> = HelloWorldObject {
            id: <span class="hljs-keyword">object</span>::new(ctx),

        <span class="hljs-comment">// Here</span>
            text: string::utf8(b<span class="hljs-string">"Hello World!"</span>)
        };
        transfer::transfer(<span class="hljs-keyword">object</span>, tx_context::sender(ctx));
    }
</code></pre><p><strong>Reference</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/3_custom_types_and_abilities.md">https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/3_custom_types_and_abilities.md</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/2b2b4adaad6270c1ba8cde6e785b48063fa58f24259b5cb8c953060284fae5e1.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sui Move Lecture #2 Project Architecture]]></title>
            <link>https://paragraph.com/@artechclub/sui-move-lecture-2-project-architecture</link>
            <guid>GBzQ83eR2S5AUTOyJzZl</guid>
            <pubDate>Tue, 16 May 2023 21:52:23 GMT</pubDate>
            <description><![CDATA[Following the introduction of lecture #1, let’s dive into the details of Sui Move language.Sui Project ArchitectureMove VS SolidityMove is a programming language designed specifically for the Libra blockchain, whereas Solidity is primarily used for developing smart contracts on the Ethereum blockchain. While both languages serve a similar purpose, their underlying blockchain platforms have different architectures and designs, which may impact the way developers use the languages. Move and Sol...]]></description>
            <content:encoded><![CDATA[<p>Following the introduction of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth/DdRxc2eTPSjvgkBtlmrV5DSZg0UqkKqjWUXVnezA2rM">lecture #1,</a> let’s dive into the details of Sui Move language.</p><h2 id="h-sui-project-architecture" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Sui Project Architecture</h2><h3 id="h-move-vs-solidity" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Move VS Solidity</h3><p>Move is a programming language designed specifically for the Libra blockchain, whereas Solidity is primarily used for developing smart contracts on the Ethereum blockchain. While both languages serve a similar purpose, their underlying blockchain platforms have different architectures and designs, which may impact the way developers use the languages.</p><p>Move and Solidity have different approaches to implementing smart contract functionality. Move uses resource types, which are special types of values that can only be owned by one account at a time. Solidity, on the other hand, uses an account-based model where each account has an associated balance and can perform actions on behalf of that account. This fundamental difference impacts the way smart contracts are designed and implemented in each language.</p><h3 id="h-sui-modules-and-packages" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sui Modules and Packages</h3><ul><li><p>A Sui module is a set of <strong>functions</strong> and <strong>types</strong> packed together which the developer publishes under a specific address</p></li><li><p>The Sui standard library is published under the <code>0x2</code> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://suiexplorer.com/object/0x0000000000000000000000000000000000000000000000000000000000000002">address</a>, while user-deployed modules are published under a pseudorandom address assigned by the Sui Move VM</p></li><li><p>Module starts with the <code>module</code> keyword, which is followed by module name and curly braces - inside them module contents are placed:</p><p>Example from explorer:</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://suiexplorer.com/object/0x2eeaab737b37137b94bfa8f841f92e36a153641119da3456dec1926b9960d9be?module=pool_script">https://suiexplorer.com/object/0x2eeaab737b37137b94bfa8f841f92e36a153641119da3456dec1926b9960d9be?module=pool_script</a></p><pre data-type="codeBlock" text="module hello_world {
    // module contents
}
"><code><span class="hljs-keyword">module</span> hello_world {
    <span class="hljs-regexp">//</span> <span class="hljs-keyword">module</span> contents
}
</code></pre></li><li><p>Published modules are immutable objects in Sui; an immutable object is an object that can never be mutated, transferred or deleted. Because of this immutability, the object is not owned by anyone, and hence it can be used by anyone</p></li><li><p>A Move package is just a collection of modules with a manifest file called Move.toml. Example:</p></li></ul><h3 id="h-initializing-a-sui-move-package" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Initializing a Sui Move Package</h3><p>Use the following <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.sui.io/build/cli-client">Sui CLI</a> command to start a skeleton Sui package:</p><pre data-type="codeBlock" text="sui move new &lt;PACKAGE NAME&gt;
"><code>sui move <span class="hljs-keyword">new</span> <span class="hljs-operator">&#x3C;</span>PACKAGE NAME<span class="hljs-operator">></span>
</code></pre><p>For our example in this unit, we will start a Hello World project:</p><pre data-type="codeBlock" text="sui move new hello_world
"><code>sui move <span class="hljs-keyword">new</span> hello_world
</code></pre><p>This creates:</p><ul><li><p>the project root folder <code>hello_world</code></p></li><li><p>the <code>Move.toml</code> manifest file</p></li><li><p>the <code>sources</code> subfolder which will contain Sui Move smart contract source files</p></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/0220e8f90189c3293c89d33786f5e0c78a339dee2bfa5cb6979a6c3eef8c6705.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-movetoml-manifest-structure" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Move.toml Manifest Structure</h3><p><code>Move.toml</code> is the manifest file of a package and is automatically generated in the project root folder.</p><p><code>Move.toml</code> consists of three sections:</p><ul><li><p><code>[package]</code> Defines the name and version number of the package</p></li><li><p><code>[dependencies]</code> Defines other packages that this package depends on, such as the Sui standard library; other third-party dependencies should be added here as well</p></li><li><p><code>[addresses]</code> Defines aliases for addresses in the package source code</p><p><strong>Sample Move.toml File</strong></p><p>This is the <code>Move.toml</code> generated by the Sui CLI with the package name <code>hello_world</code>:</p></li></ul><pre data-type="codeBlock" text="[package]
name = &quot;hello_world&quot;
version = &quot;0.0.1&quot;

[dependencies]
Sui = { git = &quot;https://github.com/MystenLabs/sui.git&quot;, subdir = &quot;crates/sui-framework/packages/sui-framework&quot;, rev = &quot;testnet&quot; }

[addresses]
hello_world =  &quot;0x0&quot;
sui =  &quot;0000000000000000000000000000000000000000000000000000000000000002&quot;
"><code><span class="hljs-section">[package]</span>
<span class="hljs-attr">name</span> = <span class="hljs-string">"hello_world"</span>
<span class="hljs-attr">version</span> = <span class="hljs-string">"0.0.1"</span>

<span class="hljs-section">[dependencies]</span>
<span class="hljs-attr">Sui</span> = { git = <span class="hljs-string">"https://github.com/MystenLabs/sui.git"</span>, subdir = <span class="hljs-string">"crates/sui-framework/packages/sui-framework"</span>, rev = <span class="hljs-string">"testnet"</span> }

<span class="hljs-section">[addresses]</span>
<span class="hljs-attr">hello_world</span> =  <span class="hljs-string">"0x0"</span>
<span class="hljs-attr">sui</span> =  <span class="hljs-string">"0000000000000000000000000000000000000000000000000000000000000002"</span>
</code></pre><p>We see that the Sui standard library dependency here is defined using a GitHub repo, but it can also point to a local binary using its relative or absolute file path, for example:</p><pre data-type="codeBlock" text="[dependencies]
Sui = { local = &quot;../sui/crates/sui-framework/packages/sui-framework&quot; }
"><code><span class="hljs-section">[dependencies]</span>
<span class="hljs-attr">Sui</span> = { local = <span class="hljs-string">"../sui/crates/sui-framework/packages/sui-framework"</span> }
</code></pre><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0"></h2><p>Sui Module and Package Naming</p><p>Sui Move module and package naming convention uses <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Snake_case">snake casing</a>, i.e. <code>this_is_snake_casing</code>.</p><p>A Sui module name uses the Rust path separator <code>::</code> to divide the package name and the module name, examples:</p><p><code>unit_one::hello_world </code>- hello_world module in unit_one package</p><p><code>capy::capy </code>- capy module in capy package</p><p>For more information on Move naming conventions, please check the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://move-language.github.io/move/coding-conventions.html#naming">style section</a> of the Move book.</p><p>Examples from explorer:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ef260110a12b55fe94e717003395b22c1898d26196a488c88fc0254674950aae.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><strong>Reference:</strong></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/2_sui_project_structure.md">https://github.com/sui-foundation/sui-move-intro-course/blob/main/unit-one/lessons/2_sui_project_structure.md</a></p>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/fb606816f2d54c9d3b37be8a5837418d995f35a658c4f2d07bebea885a83013a.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Sui Move Lecture #1  Setup your development environment]]></title>
            <link>https://paragraph.com/@artechclub/sui-move-lecture-1-setup-your-development-environment</link>
            <guid>RaZZXGgaUGA4iYoMWrCx</guid>
            <pubDate>Tue, 16 May 2023 03:21:04 GMT</pubDate>
            <description><![CDATA[Lecture 1: Setup your development environmentInstall Sui BinaryInfo: The following instructions are based on official guides hereInstall Dependency Check the official doc here to install the necessary dependencies. Please note that the dependencies vary for different operation systems.Install Sui binary Run `cargo install`cargo install --locked --git https://github.com/MystenLabs/sui.git --tag sui-v1.0.0 sui and it will be saved at `$HOME/.cargo/bin/sui`Build after the codebase is downloaded#...]]></description>
            <content:encoded><![CDATA[<h2 id="h-lecture-1-setup-your-development-environment" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Lecture 1: Setup your development environment</h2><h3 id="h-install-sui-binary" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Install Sui Binary</h3><p>Info: The following instructions are based on official guides <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.sui.io/build/install#install-sui-binaries">here</a></p><ol><li><p>Install Dependency</p><p>Check the official doc <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.sui.io/build/install#prerequisites">here</a> to install the necessary dependencies. Please note that the dependencies vary for different operation systems.</p></li><li><p>Install <strong>Sui</strong> binary</p><p>Run `cargo install`</p><pre data-type="codeBlock" text="cargo install --locked --git https://github.com/MystenLabs/sui.git --tag sui-v1.0.0 sui
"><code>cargo install <span class="hljs-operator">-</span><span class="hljs-operator">-</span>locked <span class="hljs-operator">-</span><span class="hljs-operator">-</span>git https:<span class="hljs-comment">//github.com/MystenLabs/sui.git --tag sui-v1.0.0 sui</span>
</code></pre><p>and it will be saved at `$HOME/.cargo/bin/sui`</p></li><li><p>Build after the codebase is downloaded</p><pre data-type="codeBlock" text="# binary will be generated under sui/target/release，

git clone https://github.com/MystenLabs/sui.git

cd sui/

git checkout sui-v1.0.0-release

cargo build --release
"><code># binary will be generated under sui<span class="hljs-operator">/</span>target<span class="hljs-operator">/</span>release，

git clone https:<span class="hljs-comment">//github.com/MystenLabs/sui.git</span>

cd sui<span class="hljs-operator">/</span>

git checkout sui<span class="hljs-operator">-</span>v1<span class="hljs-number">.0</span><span class="hljs-number">.0</span><span class="hljs-operator">-</span>release

cargo build <span class="hljs-operator">-</span><span class="hljs-operator">-</span>release
</code></pre></li><li><p>Verify install</p></li></ol><pre data-type="codeBlock" text="sui -V
"><code>sui <span class="hljs-operator">-</span>V
</code></pre><p>Once you see the version information, you are all done!</p><p>Congrats!</p><h3 id="h-sui-move-ide" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Sui Move IDE</h3><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.movestudio.dev/">https://www.movestudio.dev/</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://marketplace.visualstudio.com/items?itemName=move.move-analyzer">https://marketplace.visualstudio.com/items?itemName=move.move-analyzer</a></p><h3 id="h-how-to-use-sui-cli" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">How to use sui cli?</h3><p>You can read the complete documentation <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.sui.io/build/cli-client">here</a></p><ul><li><p><strong>Create new address</strong></p><pre data-type="codeBlock" text="sui client new-address secp256k1
"><code>sui client <span class="hljs-keyword">new</span><span class="hljs-operator">-</span><span class="hljs-keyword">address</span> secp256k1
</code></pre><p>The command returns a new address and the 24-word recovery phrase for it.</p></li><li><p><strong>Check all your address</strong></p><p>the following command returns the list of account addresses available on the platform:</p><pre data-type="codeBlock" text="sui client addresses
"><code></code></pre></li></ul><p>The response resembles the following:</p><pre data-type="codeBlock" text="0x008e9c621f4fdb210b873aab59a1e5bf32ddb1d33ee85eb069b348c234465106
0x011a285261b9f8d10a0c7ecb4c0dbe6d396825768dba38c3056809472736e521
0x4ab708d1a4160fa0fdbf359691764e16380444ddb48d2b8856a169594a9baa55
0xa3c00467938b392a12355397bdd3d319cea5c9b8f4fc9c51b46b8e15a807f030
0xa56612ad4f5dbc04c651e8d20f56af3316ee6793335707f29857bacabf9127d0 &lt;=
"><code><span class="hljs-number">0x008e9c621f4fdb210b873aab59a1e5bf32ddb1d33ee85eb069b348c234465106</span>
<span class="hljs-number">0x011a285261b9f8d10a0c7ecb4c0dbe6d396825768dba38c3056809472736e521</span>
<span class="hljs-number">0x4ab708d1a4160fa0fdbf359691764e16380444ddb48d2b8856a169594a9baa55</span>
<span class="hljs-number">0xa3c00467938b392a12355397bdd3d319cea5c9b8f4fc9c51b46b8e15a807f030</span>
<span class="hljs-number">0xa56612ad4f5dbc04c651e8d20f56af3316ee6793335707f29857bacabf9127d0</span> <span class="hljs-operator">&#x3C;</span><span class="hljs-operator">=</span>
</code></pre><p>The <code>&lt;=</code> indicates the active address.</p><p>You can <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.sui.io/build/cli-client#active-address">switch</a> to a different address.</p><p><strong>Manage Networks</strong></p><ul><li><p>Add devnet</p></li></ul><pre data-type="codeBlock" text="sui client new-env --alias devnet --rpc https://fullnode.devnet.sui.io:443
"><code>sui client <span class="hljs-keyword">new</span><span class="hljs-operator">-</span>env <span class="hljs-operator">-</span><span class="hljs-operator">-</span>alias devnet <span class="hljs-operator">-</span><span class="hljs-operator">-</span>rpc https:<span class="hljs-comment">//fullnode.devnet.sui.io:443</span>
</code></pre><ul><li><p>Add testnet</p><pre data-type="codeBlock" text="sui client new-env --alias testnet --rpc https://fullnode.testnet.sui.io:443
"><code>sui client <span class="hljs-keyword">new</span><span class="hljs-operator">-</span>env <span class="hljs-operator">-</span><span class="hljs-operator">-</span>alias testnet <span class="hljs-operator">-</span><span class="hljs-operator">-</span>rpc https:<span class="hljs-comment">//fullnode.testnet.sui.io:443</span>
</code></pre></li></ul><p><strong>Get devnet token</strong></p><pre data-type="codeBlock" text="curl --location --request POST &apos;https://faucet.devnet.sui.io/gas&apos; --header &apos;Content-Type: application/json&apos; --data-raw &apos;{&quot;FixedAmountRequest&quot;:{&quot;recipient&quot;:&quot;&lt;WALLET ADDRESS&gt;&quot;}}&apos;
"><code>curl <span class="hljs-operator">-</span><span class="hljs-operator">-</span>location <span class="hljs-operator">-</span><span class="hljs-operator">-</span>request POST <span class="hljs-string">'https://faucet.devnet.sui.io/gas'</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>header <span class="hljs-string">'Content-Type: application/json'</span> <span class="hljs-operator">-</span><span class="hljs-operator">-</span>data<span class="hljs-operator">-</span>raw <span class="hljs-string">'{"FixedAmountRequest":{"recipient":"&#x3C;WALLET ADDRESS>"}}'</span>
</code></pre><p><strong>Switch to devnet env</strong></p><pre data-type="codeBlock" text="sui client switch --env devnet
"><code>sui client switch <span class="hljs-operator">-</span><span class="hljs-operator">-</span>env devnet
</code></pre><p><strong>Check gas balance</strong></p><pre data-type="codeBlock" text="sui client gas &lt;wallet-address&gt;
"><code>sui client gas <span class="hljs-operator">&#x3C;</span>wallet<span class="hljs-operator">-</span><span class="hljs-keyword">address</span><span class="hljs-operator">></span>
</code></pre><p>In this lecture, you learned how to install Sui and use basic Sui client commands. Stay tuned for our next tutorial!</p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/3448710d13cdd0275fa54aac82a2af6b322d2d8b7498a331e4c24e90808822e6.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Hello, Web3!]]></title>
            <link>https://paragraph.com/@artechclub/hello-web3</link>
            <guid>TRyey6f4vhWYO4gYtfFQ</guid>
            <pubDate>Fri, 21 Apr 2023 06:52:49 GMT</pubDate>
            <description><![CDATA[Hello world! Created by a group of Web3 pioneers, Artech Club welcomes everyone who is ready to explore and innovate. Follow us for tips and insights on branding, marketing, and entrepreneurship. Join us in shaping the future of Web3!About usWe are members of Artech Club, dedicated to building a leading web3 education and media club. We are committed to contributing educational and valuable stories about the blockchain ecosystem and web3 world by Artech Media. We hope can deliver value and wi...]]></description>
            <content:encoded><![CDATA[<p>Hello world!</p><p>Created by a group of Web3 pioneers, Artech Club welcomes everyone who is ready to explore and innovate. <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Follow us</a> for tips and insights on branding, marketing, and entrepreneurship. Join us in shaping the future of Web3!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2e9b33c3cc66fc58337198a6596354f264d8467f88b0b56cd870cac7df6092ba.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-about-us" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">About us</h2><p>We are members of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="http://artechclub.com/">Artech Club</a>, dedicated to building a leading web3 education and media club. We are committed to contributing educational and valuable stories about the blockchain ecosystem and web3 world by Artech Media. We hope can deliver value and wisdom to this fascinating area and facilitate the flow of knowledge and value.</p><h2 id="h-make-yourself-heard" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Make yourself heard</h2><p>We welcome everyone to discuss any related questions with us, leave us comments on the topics you would like us to focus on, or join us in contributing content together. We believe that asking the right questions and finding solutions are equally important. Thank you for reading our first sharing.</p><p>Follow us on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/artechclubeth">Twitter</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://mirror.xyz/artechclub.eth">Mirror</a> is the first step to joining the Artech Club!</p><div data-type="subscribeButton" class="center-contents"><a class="email-subscribe-button" href="null">Subscribe</a></div>]]></content:encoded>
            <author>artechclub@newsletter.paragraph.com (Artech.Club)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/38556ee37eb092707283f4906ef8a89bd49ce8f4b6952b1f543a800a38cd8d9d.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>