diff --git a/404.html b/404.html index 8dd2919..b6ea8b6 100644 --- a/404.html +++ b/404.html @@ -16,13 +16,13 @@ - - + +
Skip to main content

Page Not Found

We could not find what you were looking for.

Please contact the owner of the site that linked you to the original URL and let them know their link is broken.

- - + + \ No newline at end of file diff --git a/aggregator-program.html b/aggregator-program.html index b00b7f6..ac9e788 100644 --- a/aggregator-program.html +++ b/aggregator-program.html @@ -16,15 +16,15 @@ - - + +
Skip to main content

📚 Aggregator Program

Due to the current implementation of technology on Chia, we require a third-party between the users and the AMM pool to handle the batching of the transactions. Much like Scoopers in Sundaeswap and batcher in Minswap, they are able to make extra fee on top of the designed 0.30% of the AMM pool. The specifics of the fee structure is TBD, but the essence is that they'll be able to just take the code we build, adapt minimally, and run their own aggregator brand on top of the Hashgreen protocol. They can be the best advertiser for us, sending Hashgreen to every corner of the ecosystem and outside. There will be an election system to make sure the top project developers/community leaders are running the aggregation.

- - + + \ No newline at end of file diff --git a/assets/images/Post_Liquidity_Pool_Creators_Wanted-fca4be1c3e41f1840d9ff42a0b310550.png b/assets/images/Post_Liquidity_Pool_Creators_Wanted-fca4be1c3e41f1840d9ff42a0b310550.png new file mode 100644 index 0000000..5655085 Binary files /dev/null and b/assets/images/Post_Liquidity_Pool_Creators_Wanted-fca4be1c3e41f1840d9ff42a0b310550.png differ diff --git a/assets/images/Untitled-9dc80d13feeb770ae02fb81e35b9e476.png b/assets/images/Untitled-9dc80d13feeb770ae02fb81e35b9e476.png new file mode 100644 index 0000000..5d5ea0c Binary files /dev/null and b/assets/images/Untitled-9dc80d13feeb770ae02fb81e35b9e476.png differ diff --git a/assets/images/banner-blog-bc0a726bca214136fa51659098af68df.jpg b/assets/images/banner-blog-bc0a726bca214136fa51659098af68df.jpg new file mode 100644 index 0000000..2c9a7ca Binary files /dev/null and b/assets/images/banner-blog-bc0a726bca214136fa51659098af68df.jpg differ diff --git a/assets/images/blog-image-testnet-airdrop-55ee2601bdfc644e9b5c9989bc190bce.jpg b/assets/images/blog-image-testnet-airdrop-55ee2601bdfc644e9b5c9989bc190bce.jpg new file mode 100644 index 0000000..4a3172d Binary files /dev/null and b/assets/images/blog-image-testnet-airdrop-55ee2601bdfc644e9b5c9989bc190bce.jpg differ diff --git a/assets/images/blog_image_connect_wallet-72b58b8709d1b2a10c8419be3963b008.png b/assets/images/blog_image_connect_wallet-72b58b8709d1b2a10c8419be3963b008.png new file mode 100644 index 0000000..c5bc471 Binary files /dev/null and b/assets/images/blog_image_connect_wallet-72b58b8709d1b2a10c8419be3963b008.png differ diff --git a/assets/images/white-paper-update-b11c14603ca46fc6a118013cc04e4ee0.jpg b/assets/images/white-paper-update-b11c14603ca46fc6a118013cc04e4ee0.jpg new file mode 100644 index 0000000..9b91e32 Binary files /dev/null and b/assets/images/white-paper-update-b11c14603ca46fc6a118013cc04e4ee0.jpg differ diff --git a/assets/js/0397f03f.ff4d5501.js b/assets/js/0397f03f.0574bfab.js similarity index 80% rename from assets/js/0397f03f.ff4d5501.js rename to assets/js/0397f03f.0574bfab.js index 57182a9..95f030b 100644 --- a/assets/js/0397f03f.ff4d5501.js +++ b/assets/js/0397f03f.0574bfab.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6230],{8064:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/cryptocurrency/page/3","page":3,"postsPerPage":10,"totalPages":3,"totalCount":24,"previousPage":"/blog/tags/cryptocurrency/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6230],{8064:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/cryptocurrency/page/3","page":3,"postsPerPage":10,"totalPages":3,"totalCount":25,"previousPage":"/blog/tags/cryptocurrency/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/081981f9.13828408.js b/assets/js/081981f9.13828408.js new file mode 100644 index 0000000..49a8763 --- /dev/null +++ b/assets/js/081981f9.13828408.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4787],{3905:function(e,t,a){a.d(t,{Zo:function(){return h},kt:function(){return g}});var n=a(7294);function r(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}function i(e,t){var a=Object.keys(e);if(Object.getOwnPropertySymbols){var n=Object.getOwnPropertySymbols(e);t&&(n=n.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),a.push.apply(a,n)}return a}function o(e){for(var t=1;t=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),c=p(a),g=r,d=c["".concat(l,".").concat(g)]||c[g]||u[g]||i;return a?n.createElement(d,o(o({ref:t},h),{},{components:a})):n.createElement(d,o({ref:t},h))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var p=2;p=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),l=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=l(n),u=i,m=g["".concat(p,".").concat(u)]||g[u]||h[u]||r;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=g;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var l=2;l=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),l=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=l(n),u=i,m=g["".concat(p,".").concat(u)]||g[u]||h[u]||r;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=g;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var l=2;l=0||(r[a]=e[a]);return r}(e,t);if(Object.getOwnPropertySymbols){var i=Object.getOwnPropertySymbols(e);for(n=0;n=0||Object.prototype.propertyIsEnumerable.call(e,a)&&(r[a]=e[a])}return r}var l=n.createContext({}),p=function(e){var t=n.useContext(l),a=t;return e&&(a="function"==typeof e?e(t):o(o({},t),e)),a},h=function(e){var t=p(e.components);return n.createElement(l.Provider,{value:t},e.children)},u={inlineCode:"code",wrapper:function(e){var t=e.children;return n.createElement(n.Fragment,{},t)}},c=n.forwardRef((function(e,t){var a=e.components,r=e.mdxType,i=e.originalType,l=e.parentName,h=s(e,["components","mdxType","originalType","parentName"]),c=p(a),g=r,d=c["".concat(l,".").concat(g)]||c[g]||u[g]||i;return a?n.createElement(d,o(o({ref:t},h),{},{components:a})):n.createElement(d,o({ref:t},h))}));function g(e,t){var a=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var i=a.length,o=new Array(i);o[0]=c;var s={};for(var l in t)hasOwnProperty.call(t,l)&&(s[l]=t[l]);s.originalType=e,s.mdxType="string"==typeof e?e:r,o[1]=s;for(var p=2;p=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),l=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=l(n),u=i,m=g["".concat(p,".").concat(u)]||g[u]||h[u]||r;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=g;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var l=2;l=0||(i[n]=e[n]);return i}(e,t);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);for(a=0;a=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(i[n]=e[n])}return i}var p=a.createContext({}),l=function(e){var t=a.useContext(p),n=t;return e&&(n="function"==typeof e?e(t):o(o({},t),e)),n},c=function(e){var t=l(e.components);return a.createElement(p.Provider,{value:t},e.children)},h={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},g=a.forwardRef((function(e,t){var n=e.components,i=e.mdxType,r=e.originalType,p=e.parentName,c=s(e,["components","mdxType","originalType","parentName"]),g=l(n),u=i,m=g["".concat(p,".").concat(u)]||g[u]||h[u]||r;return n?a.createElement(m,o(o({ref:t},c),{},{components:n})):a.createElement(m,o({ref:t},c))}));function u(e,t){var n=arguments,i=t&&t.mdxType;if("string"==typeof e||i){var r=n.length,o=new Array(r);o[0]=g;var s={};for(var p in t)hasOwnProperty.call(t,p)&&(s[p]=t[p]);s.originalType=e,s.mdxType="string"==typeof e?e:i,o[1]=s;for(var l=2;l **[Click here to visit our page and start testing!](https://hash.green/)**\\n\\n## Singleton Aggregation Optimization: Enhancing Trading Stability for a Seamless Experience\\n\\nTrading stability is of paramount importance to provide a smooth and reliable platform, and [HashgreenSwap](https://hash.green/) continuously strives to build a better trading environment for all green walkers within the Chia ecosystem. With this in mind, we are excited to introduce the implementation and optimization of **Singleton Aggregation**, a significant enhancement designed to further enhance trading stability. \\n\\nThrough meticulous fine-tuning and eliminating potential bottlenecks or inefficiencies, we have significantly improved the overall performance and reliability of [HashgreenSwap](https://hash.green/). This optimization ensures a seamless trading experience, enabling you to trade with confidence. We remain dedicated to our mission of providing the best possible platform, and trading stability remains at the forefront of our ongoing development efforts.\\n\\n:::info\\n\\nIf you would like to know more about native singleton aggregation, feel free to check out [this doc](https://docs.hash.green/features#native-singleton-aggregation) or join our [Twitter](https://twitter.com/HashgreenLabs) and [Discord](https://twitter.com/HashgreenLabs) to discuss with us!\\n\\n:::\\n\\n## Introducing Price Slippage\\n\\nIn this release, you now have more control over your transactions, ensuring successful execution even in volatile market conditions with the presence of **Price Slippage** options.\\n\\n![price_slippage.png](./assets/price_slippage.png)\\n\\nWhen using [HashgreenSwap](https://hash.green/), you can now select a slippage tolerance that aligns with your preferences, ranging from 0.1% to 5%. This feature empowers you to define the acceptable price difference between the time of your transaction initiation and its actual execution. By choosing an appropriate slippage tolerance, you can minimize the risk of unexpected price changes impacting your trade outcomes.\\n\\n:::tip What\u2019s Slippage Tolerance?\\n\\nSlippage tolerance refers to the maximum percentage price difference that you are willing to tolerate before your order stops filling or gets canceled. You can also learn more about slippage via [this article](https://www.investopedia.com/terms/s/slippage.asp) written by [Adam Hayes](https://www.investopedia.com/contributors/53677/) from [Investopedia.com](https://www.investopedia.com/).\\n\\n:::\\n\\n![minimum_received.png](./assets/minimum_received.png)\\n\\nPlease choose a slippage tolerance by clicking the setting button at the upper right corner of both the [Swap](https://testnet-swap.hash.green/swap) and [Liquidity](https://testnet-swap.hash.green/liquidity) pages. Once you have entered the desired amount you would like to trade, [HashgreenSwap](https://hash.green/) will display and confirm that the minimum (amount) received is guaranteed when you submit your transaction.\\n\\n## Select Token\\n\\n

\\n\\n

\\n\\nWith this update, navigating and trading in [HashgreenSwap](https://hash.green/) has never been easier. The **Select Token** feature allows you to effortlessly choose and search for the specific token you want to trade by simply typing its name or asset ID in the search bar. Finding your desired token is now just a few keystrokes away.\\n\\n![select_token.gif](./assets/select_token.gif)\\n\\nHow do I search and where can I select the token?\\n\\n- Navigate to the transaction page (either [Swap](https://testnet-swap.hash.green/swap) or [Liquidity](https://testnet-swap.hash.green/liquidity)) in HashgreenSwap.\\n- Hover the mouse over and click the token card (each has an arrow pointing downward).\\n- A modal with a search bar will pop up with a list of tokens displayed right below.\\n- Type the name or asset ID in the search bar. Once you find the token, click it to proceed!\\n- If it shows \u201cNo results found\u201d, please check your spelling and try again.\\n\\n## Our Message\\n\\nWe are pleased to have you join us for another update from [HashgreenSwap](https://hash.green/). We would like to invite you again to participate in testing [HashgreenSwap](https://hash.green/) on Testnet! Your feedback and support are invaluable to us as we strive to provide the smoothest experience on the Chia blockchain.\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit\xa0[our troubleshooting channel](https://discord.gg/YRksyTEmeq)\xa0for a quick check. If the problem still persists, please contact us and provide additional details through\xa0[the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756)\xa0in Discord.\\n\\n:::\\n\\n> HashgreenSwap: [https://hash.green/](https://hash.green/)
\\n> Follow us on Twitter: [https://twitter.com/HashgreenLabs](https://twitter.com/HashgreenLabs)
\\n> Join our Discord: [https://t.co/XycsnpDJbS](https://t.co/XycsnpDJbS)
\\n> Follow us on LinkedIn: [https://www.linkedin.com/company/hashgreen-labs](https://www.linkedin.com/company/hashgreen-labs)"},{"id":"/join-hashgreenswap-on-testnet-v0.2-release","metadata":{"permalink":"/blog/join-hashgreenswap-on-testnet-v0.2-release","source":"@site/blog/join-hashgreenswap-on-testnet-v0.2-release/index.md","title":"Join HashgreenSwap on Testnet: v0.2 Release","description":"HashgreenSwap v0.2 is launched on testnet! Join us and take a look at our brand new overview page, dynamic fee, and more!","date":"2023-06-08T00:00:00.000Z","formattedDate":"June 8, 2023","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap"},{"label":"hoogii","permalink":"/blog/tags/hoogii"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"testnet","permalink":"/blog/tags/testnet"}],"readingTime":4.3,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Join HashgreenSwap on Testnet: v0.2 Release","date":"2023-06-08T00:00:00.000Z","authors":["james"],"tags":["hashgreen","hashgreenswap","hoogii","chia","blockchain","cryptocurrency","mit","startup","amm","testnet"],"description":"HashgreenSwap v0.2 is launched on testnet! Join us and take a look at our brand new overview page, dynamic fee, and more!","image":"./assets/Banner-testnet-blog_03.jpg"},"prevItem":{"title":"HashgreenSwap v0.3 Release","permalink":"/blog/hashgreenswap-v0.3-release"},"nextItem":{"title":"HashgreenSwap v0.1 Is Now Live on Testnet!","permalink":"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet"}},"content":"![Banner-testnet-blog_03.jpg](./assets/Banner-testnet-blog_03.jpg)\\n\\nWelcome back to another update from HashgreenSwap. In today\u2019s blog, we will introduce the latest release of [HashgreenSwap v0.2](https://hash.green/) on Testnet. We warmly invite you to join us and participate in testing the newly implemented features in [HashgreenSwap v0.2](https://hash.green/). Without further ado, let\u2019s jump right in.\\n\\n> **[Click here to visit our page and start testing!](https://hash.green/)**\\n> \\n\\n# HashgreenSwap v0.2 Release\\n\\nThis update introduces two significant features: **Overview** and **Dynamic Fee**. We are excited to bring these additions to [HashgreenSwap](https://hash.green/), alongside various smaller updates and bug fixes that have been implemented based on your invaluable feedback.\\n\\n## Introducing the Analytics Page\u2014Overview\\n\\n![overview.png](./assets/overview.png)\\n\\n[Overview](https://testnet-swap.hash.green/overview) is a brand new segment in [HashgreenSwap v0.2](https://hash.green/) designed to provide a comprehensive overview of trading information and transaction records. With this addition, you can easily access the general trading information in [HashgreenSwap](https://hash.green/), as well as delve into the details of transactions sorted by tokens and pools. Additionally, you can apply filters to explore transactions based on the type of operations performed within the AMM.\\n\\n### Overview\\n\\n![overview_cards_v0.2.png](./assets/overview_cards_v0.2.png)\\n\\n:::tip Did you know...\\nThe total transactions conducted in HashgreenSwap on Testnet have recently exceeded 10,000!\\n:::\\n\\n[At the top section within the Overview page](https://testnet-swap.hash.green/overview), you can find the trading analytics, displaying HashgreenSwap\'s TVL (total value locked), total trading volume, and the overall number of transactions. As you scroll down, you can explore information regarding tokens, pools, and transactions. Alternatively, you can click on the \u201c[Pools](#pools)\u201d or \u201c[Tokens](#tokens)\u201d tab to access a separate page dedicated to pools or tokens, respectively.\\n\\n![transactions.png](./assets/transactions.png)\\n\\nWithin **[Overview](https://testnet-swap.hash.green/overview)**, you will have access to a display of transaction records. You will be able to check each transaction\u2019s transaction type, total value (XCH), token amount, transaction address, and the timestamp. You can also utilize the filter options to selectively display all, swap, add, or remove transactions.\\n\\nEach transaction will have a transaction address. By hovering over the address, you can click on it to access additional information through [Spacescan.io](https://www.spacescan.io/).\\n\\n### Tokens\\n\\n![tokens.png](./assets/tokens.png)\\n\\nThe **[Tokens](https://testnet-swap.hash.green/overview/tokens)** chart presents fundamental information about each token. By hovering over a specific token and clicking on it, you will be redirected to a separate page for extra information.\\n\\n![tokens_txch.png](./assets/tokens_txch.png)\\n\\nTake [TXCH](https://testnet-swap.hash.green/overview/tokens/TXCH) as an example. Once you are redirected, you will be presented with information about the token, including its TVL, total trading volume, total transactions, pool information, and all the relevant transaction records. You can, conveniently, click **Add Liquidity** or **Trade** to be redirected to the respective pages.\\n\\n### Pools\\n\\n![pools.png](./assets/pools.png)\\n\\n**[Pools](https://testnet-swap.hash.green/overview/pools)** will show you the current pools available in HashgreenSwap, including pertinent details such as total volume, TVL, and [APY (annual percentage yield)](https://academy.binance.com/en/articles/apy-vs-apr-what-s-the-difference) of each pair. By hovering over and clicking on a specific pool, it will redirect you to a separate page with further information related to the pool.\\n\\n![token_pair.png](./assets/token_pair.png)\\n\\nEach pool will have its own overview page where details are presented as shown in the image.\\n\\n## Updates on Fee\\n\\n### Dynamic Fee\\n\\nIn order to prevent transactions from failing to go through due to insufficient fees, we developed **Dynamic Fee** to calculate the minimum required fee for your transaction, allowing you to choose enough fee to complete your transaction. Whenever you are [swapping](https://testnet-swap.hash.green/swap), [adding liquidity](https://testnet-swap.hash.green/liquidity), or [removing liquidity](https://testnet-swap.hash.green/liquidity), you can choose between different amounts of network fees that are calculated and the approximated speed will be shown beneath each fee option to give you a better understanding.\\n\\n

\\n \\n

\\n\\nYou can now directly choose the network fee in [HashgreenSwap](https://hash.green/). Powered by dynamic fee aggregation, the system will estimate and recommend up to three fee options with different amounts and speeds.\\n\\n:::tip\\n\\nThe aggregation process calculates the minimum required fee and provides up to three network fee options. By default, the slow option on Testnet is set to 0.005 TXCH to ensure successful transaction completion (However, the default network fee on Mainnet will be 0 XCH). For the other two options, if the calculations have minimal or negligible differences, the system will display a total of two network fee options, including the slow one.\\n\\n:::\\n\\n## Bug Fixes and Minor Adjustments\\n\\nBased on your valuable feedback, we have made several minor adjustments in response to issues identified in the previous release. Some of the fixes implemented based on your feedback include, but are not limited to:\\n\\n- Strengthening and optimizing the user interface.\\n- Ensuring that the wallet remains connected even when the page is refreshed.\\n- Resolving the issue of continuous pop-up windows appearing.\\n- Adding buttons to conveniently copy IDs for LP tokens in HashgreenSwap.\\n\\n## Our Message\\n\\nWe are pleased to have you join us for another update from [HashgreenSwap](https://hash.green/). We would like to invite you again to participate in testing HashgreenSwap on Testnet! Your feedback and support are invaluable to us as we strive to provide the smoothest experience on the Chia blockchain.\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit\xa0[our troubleshooting channel](https://discord.gg/YRksyTEmeq)\xa0for a quick check. If the problem still persists, please contact us and provide additional details through\xa0[the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756)\xa0in Discord.\\n\\n:::\\n\\n> HashgreenSwap: [https://hash.green/](https://hash.green/)
\\n> Follow us on Twitter: [https://twitter.com/HashgreenLabs](https://twitter.com/HashgreenLabs)
\\n> Join our Discord: [https://t.co/XycsnpDJbS](https://t.co/XycsnpDJbS)
\\n> Follow us on LinkedIn: [https://www.linkedin.com/company/hashgreen-labs](https://www.linkedin.com/company/hashgreen-labs)"},{"id":"/HashgreenSwap-v0.1-is-now-live-on-testnet","metadata":{"permalink":"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet","source":"@site/blog/HashgreenSwap-v0.1-is-now-live-on-testnet/index.md","title":"HashgreenSwap v0.1 Is Now Live on Testnet!","description":"HashgreenSwap v0.1 is now live on testnet. Get ready to participate in the testing and earn potential rewards!","date":"2023-04-27T00:00:00.000Z","formattedDate":"April 27, 2023","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap"},{"label":"hoogii","permalink":"/blog/tags/hoogii"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"testnet","permalink":"/blog/tags/testnet"}],"readingTime":3.875,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"HashgreenSwap v0.1 Is Now Live on Testnet!","date":"2023-04-27T00:00:00.000Z","authors":["james"],"tags":["hashgreen","hashgreenswap","hoogii","chia","blockchain","cryptocurrency","mit","startup","amm","testnet"],"description":"HashgreenSwap v0.1 is now live on testnet. Get ready to participate in the testing and earn potential rewards!","image":"./assets/banner-blog.jpg"},"prevItem":{"title":"Join HashgreenSwap on Testnet: v0.2 Release","permalink":"/blog/join-hashgreenswap-on-testnet-v0.2-release"},"nextItem":{"title":"Picturing the Future Development in Chia: A Trusted Gateway System","permalink":"/blog/blog-1-a-trusted-gateway-system"}},"content":"![banner-blog.jpg](./assets/banner-blog.jpg)\\n\\n[HashgreenSwap v0.1](http://testnet-swap.hash.green) is now live on Testnet! This latest version focuses on introducing key features, debuting the main page, and providing numerous testnet events for you to participate in. Come and test HashgreenSwap v0.1 with us and give us your feedback! Let\'s get started together with HashgreenSwap v0.1 on Testnet!\\n\\n> [Visit our page and start testing!](https://testnet-swap.hash.green/)\\n> \\n\\n## Introducing HashgreenSwap v0.1 (Testnet)\\n\\n### Why HashgreenSwap? Don\u2019t Trust, Verify.\\n\\nHashgreenSwap is built around offers, with additional features such as zap, market aggregation, Cypher library, and more. This unique combination creates a trading experience unlike any other. Some of the TLDR sneak peeks include:\\n\\n- **Zap** allows users to add unequal funds to liquidity pool.\\n- All transactions can be cleared within one block.\\n- Money matters. Advanced calculus is employed to ensure fair pricing.\\n- **Cypher** library constructs the foundation of HashgreenSwap.\\n\\nCheck out this [page](https://docs.hash.green/features) and you will learn about the details of the features and mechanics we built for our automated market maker (AMM), HashgreenSwap v0.1, on the Chia blockchain. Remember. Don\u2019t trust, verify. \\n\\n### A Brand New Main Page\\n\\n*\u2014Swap, Earn, and Engage on Chia.*\\n\\n[Discover the all-new main page for HashgreenSwap!](http://testnet-swap.hash.green) We\'re thrilled to introduce our story and provide a hub for the Chia community as an AMM. Take a look and let us know what you think on [Discord](http://discord.gg/KXvqv6cwAk) or [Twitter](https://twitter.com/HashgreenLabs). Your feedback is essential as we strive to create a platform that meets your needs. Join us now and be a part of the HashgreenSwap community!\\n\\n![main-page.png](./assets/main-page.png)\\n\\n### The Integral Swap and Liquidity\\n\\nLocated on the left side of the top bar, **[Swap](http://testnet-swap.hash.green/swap)** and **[Liquidity](https://testnet-swap.hash.green/liquidity)** are the twin spotlights of HashgreenSwap v0.1. Both components are integral to the AMM, with each serving a distinct role. **Swap** allows users to exchange between two tokens on the Chia blockchain whereas **Liquidity** provides you a chance to earn rewards from the trade by staking tokens into a liquidity pool. \\n\\n![swap.png](./assets/swap.png)\\n\\n![liquidity.png](./assets/liquidity.png)\\n\\n## Start Testing HashgreenSwap v0.1\\n\\n### Get Started\\n\\nIn this release, we would like to invite you to help us explore and test the aforementioned functions in HashgreenSwap v0.1 on testnet. Specifically speaking, the procedure for testing is provided but is not necessarily limited to conducting: token swap, liquidity addition, zap, or liquidity removal. Visit the documentation for a comprehensive [guide](https://docs.hash.green/get-started)!\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit [our troubleshooting channel](https://discord.gg/YRksyTEmeq) for a quick check. If the problem still persists, please contact us and provide additional details through [the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756) in Discord.\\n\\n:::\\n\\n### Mission Green Walker\u2014Start Testing with Hoogii\\n\\n![Banner-testnet-tutorial.png](./assets/Banner-testnet-tutorial.png)\\n\\nAre you ready to earn potential rewards by testing HashgreenSwap v0.1? Follow these three simple steps to join the action and be a part of our very first testnet event, Mission Green Walker. Make sure to complete all the steps and stay tuned for even more exciting events to come! Let\'s get started on this journey together!\\n\\n**Step 1: Download Hoogii**\\n\\nEasily connect HashgreenSwap v0.1 with Hoogii following instructions here! Make sure to download [the latest version on Google Chrome Web Store](https://chrome.google.com/webstore/detail/hoogii-wallet/jljjeghmeihjegifdhbghcoihdiegkkl), connect or create a wallet, and switch the network to testnet!\\n\\n**Step 2: Claim TXCH**\\n\\nGet some TXCH from [Chia Faucet](https://testnet10-faucet.chia.net/) or [XCH Dev Faucet](https://xchdev.com/#!faucet.md) to your testnet receive address! Please note that your testnet address should start with \u201ctxch\u2026\u201d but not \u201cxch\u2026\u201d.\\n\\n**Step 3: Start Testing**\\n\\nVoila! There you have it! Now you can start exploring and testing HashgreenSwap v0.1! Below are what you can test:\\n\\n- Token Swap\u2014**Swap TXCH for TFRIES (or in the opposite order).**\\n- Liquidity Addition\u2014**Enter an amount for both TXCH and TFRIES to provide liquidity.**\\n- Zap\u2014**Add unequal funds to the TXCH-TFRIES liquidity pool.**\\n- Liquidity Removal\u2014**Choose how much liquidity you want to remove to withdraw liquidity.**\\n\\n## Our Message\\n\\nThe long-awaited HashgreenSwap v0.1 is now available on Testnet for the entire Chia community to explore and test. Our team has invested a lot of effort into its development, and we\'re hopeful that the mainnet launch is just around the corner. Your feedback is critical, and we would greatly appreciate it as we continue to enhance the platform further.\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit [our troubleshooting channel](https://discord.gg/YRksyTEmeq) for a quick check. If the problem still persists, please contact us and provide additional details through [the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756) in Discord.\\n\\n:::\\n\\nFor any inquiries or to learn more about us, please visit our **[Discord](http://discord.gg/KXvqv6cwAk)** or **[Twitter](https://twitter.com/HashgreenLabs)** pages. Don\'t forget to swap or stake some TXCH and TFRIES to earn potential rewards! We\'ll keep you posted on all future updates and events. Looking forward to seeing you soon!"},{"id":"/blog-1-a-trusted-gateway-system","metadata":{"permalink":"/blog/blog-1-a-trusted-gateway-system","source":"@site/blog/blog-1-a-trusted-gateway-system/index.md","title":"Picturing the Future Development in Chia: A Trusted Gateway System","description":"We introduce what we envision for the future development in Chia, i.e. a lightly trusted gateway system that could improve scalability and responsiveness.","date":"2022-09-21T00:00:00.000Z","formattedDate":"September 21, 2022","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"computer system design","permalink":"/blog/tags/computer-system-design"},{"label":"API","permalink":"/blog/tags/api"},{"label":"p2p","permalink":"/blog/tags/p-2-p"}],"readingTime":6.085,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Picturing the Future Development in Chia: A Trusted Gateway System","date":"2022-09-21T00:00:00.000Z","authors":["james"],"tags":["hashgreen","chia","blockchain","cryptocurrency","mit","startup","amm","computer system design","API","p2p"],"description":"We introduce what we envision for the future development in Chia, i.e. a lightly trusted gateway system that could improve scalability and responsiveness.","image":"./assets/Blog_banner_01.png"},"prevItem":{"title":"HashgreenSwap v0.1 Is Now Live on Testnet!","permalink":"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet"},"nextItem":{"title":"Weekly Update #18","permalink":"/blog/weekly-update-18"}},"content":"![banner](./assets/Blog_banner_01.png)\\n\\nHello friends and fellows of Chia, welcome back to another post from [Hashgreen](https://www.hashgreen.net/)!\\n It\'s been a while since we had an update.\\n Please forgive us for not having as many updates recently, as the development of [Hashgreen DEX](https://hash.green/dex) has come to the point where we think current features should suffice for [over-the-counter (OTC)](https://en.wikipedia.org/wiki/Over-the-counter_(finance)) trading purposes.\\n What follows consecutively is the development of the first ever AMM in Chia that is currently underway.\\n We believe the ability to trade at will independently from counter-parties is a critical primitive of on-chain decentralized finance.\\n\\nIn today\'s blog, looking back from the experience of launching [Hashgreen DEX](https://hash.green/dex) to the construction of AMM, we are going to walk you through the landscape of the existing development in [Chia](https://www.chia.net/) and introduce an easier development in which the services could function in a more responsive and scalable manner to meet the needs of both end users and developers. \\n\\n## The current development in Chia ##\\nThere are many existing dApps around the concept of a peer-to-peer trading protocol called [\u201cOffers\u201d](https://www.chia.net/offers/) now.\\n While it is decentralized and secure, the wallet is responsible for, other than just storing your [private keys](https://docs.chia.net/docs/09keys/keys-and-signatures) securely, managing these transactions/trades against peers and tracking their statuses on the blockchain by continuously pulling data from full nodes and verifying them. \\n\\nBelow is a figure showing the general picture of the system design that are commonly seen in Chia:\\n\\n
Figure: The current development in Chia.
\\n
\\n\\n
\\n

\\n\\nThe system, at a brief glance, looks reasonable and works reasonably well: \\n dApps and wallets independently communicate and interact with the blockchain, processing users\' transaction requests.\\n Together they support an array of functionalities, including but are not limited to smart contract ([\\"smart coins\\" in Chia\'s case](https://chialisp.com/docs/getting_started/first_smart_coin/)) management, transaction activity management, and analyses of the blockchain.\\n Smart coin management ensures the states in which users are trying to change are up to date on the blockchain and hence the transactions are valid when submitted; activity management and chain analysis are means to ensure, while complicated operations are behind the scenes, users can rest assured and observe high-level abstraction of their own activities as seen below.\\n\\n
Figure: Transaction activities displayed in the wallet.
\\n
\\n\\n
\\n

\\n\\nYet, current dApps (and other dApps on the way) are replicating an overlapping set of logic with the wallet underneath, performing smart coin management and blockchain analysis parallel to the wallet.\\n In a simpler sense, dApps have to spend resources to set up their infrastructure (i.e. Chia full nodes) to deal with the abundance of activities on-chain.\\n This creates two problems:\\n\\n- Functionalities are very entangled that transactions may go through either the dApp\'s own infrastructure, or through wallet\'s infrastructure.\\n This trilateral relationship is unfavored in computer system design as it ambiguates the responsibilities and roles of dApps and wallets.\\n\\n- Development effort of dApps is high owing to the nature of the complexity of blockchain node deployment.\\n The need for a dedicated infrastructure unavoidably creates an incredible entry barrier for blockchain enthusiasts, whose desire is no more than a backend-less web3 application.\\n We all agree this would hinder the ability for the Chia community to grow rapidly.\\n\\nWe have not even mentioned that current Chia wallets (including official PC wallets and browser extension wallets) have spent so much effort dissecting the whole blockchain simply to locate your transaction in the ocean of activities.\\n This burns away much computational power and energy from your computer, and it bears asking if we can find a better design that hits two birds with one stone—making dApps easier to develop and allowing wallet to offload most of the heavy lifting.\\n\\n## Web3 does not have to be inefficient ##\\ndApps or wallets do not necessarily have to deal with all the nuisances.\\n We can build a supporting system for web3 projects to allow them to read from and write to the blockchain with [APIs (application programming interface)](https://en.wikipedia.org/wiki/API).\\n The idea is that blockchain in itself does not require everyone to trustlessly maintain a replica of the chain, but rather, one should be able to fetch and verify any piece of information from the chain.\\n With that in mind, users on the edge can save their precious computation power and device pattern if they choose so, accessing the web3 world through this supporting system.\\n\\nLet me explain to you why and how exactly does having such a service, or a trusted gateway system to the blockchain, could improve the scalability of the system and thus provide a real-time experience to the end users. \\n\\n## A lightly trusted gateway to the blockchain ##\\n
Figure: What the development would look like if we apply the gateway system.
\\n
\\n\\n
\\n

\\n\\nA trusted gateway system to the blockchain is structurally decentralized in its backend and it provides endpoints users can call to execute their web3 business via APIs.\\n It interacts with the blockchain, as well as the dApps and wallets.\\n This system will focus on solving these problems:\\n\\n- With the help from the gateway system, dApps can deploy ***without*** their own infrastructure and communicate with the wallet directly for information on the blockchain.\\n Some current wallets do not support or intend to support this feature owing to [their own infrastructure implementation](https://github.com/GobyWallet/openapi/blob/f253eb8b235461ebba314dc5cd1a5217f25024be/openapi/config.py#L56-L62), but we envision a future where gateway systems are easily accessible to every developer through wallets. \\n\\n- Wallets can be a lot snappier now since a significant amount of computation has been offloaded to the gateway system, for all the web3 services (as shown in the figure above).\\n The gateway system will also have a high-performance backend that is responsible for cashing, access control, and bi-directional communication via websocket.\\n\\nThe gateway system to the blockchain could be beneficial to the users and the developers for it could enhance the scalability and responsiveness of the system.\\n It will achieve a greater level of convenience if the demand and usage of dApps in Chia grow higher.\\n But the challenge for the system would be to earn trust from the users and other developers in the defi world.\\n\\n## Even more possibilities? ##\\nThe aforementioned gateway system is just an idea that we envision and below are some more of the functionalities we can think of that also serve well:\\n\\n- An activity-based analysis of the whole blockchain can be easily carried out by the gateway system.\\n For example, standard Chia farming and transfer events, CAT minting/melting/transfer events, NFT minting/transfer/royalty collection events, etc.\\n This activity feed can be collected by wallet users or blockchain explorers, avoiding showing end users coin sets which are hard to parse for human eyes.\\n\\n- If the users provide an observable wallet public key, the gateway system can even effectively provide a non-SPV wallet to browser extension users.\\n That means, you will have a seamless experience transitioning from Chia official wallets to extension wallets!\\n\\n## Summary ##\\nWe talked about the current development in Chia and painted a picture of an easier development in which responsiveness and scalability are achieved via a lightly trusted gateway system.\\n We believe that such a gateway system could be favorable to the users and developers, and maybe you have a better idea to foster the ecosystem!"},{"id":"/weekly-update-18","metadata":{"permalink":"/blog/weekly-update-18","source":"@site/blog/weekly-update-18/index.md","title":"Weekly Update #18","description":"Hashgreen updates on: Recapping the CAT standard upgrade and Hashgreen\'s actions.","date":"2022-08-04T00:00:00.000Z","formattedDate":"August 4, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cat","permalink":"/blog/tags/cat"}],"readingTime":2.88,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #18","date":"2022-08-04T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","cryptocurrency","mit","startup","dex","cat"],"description":"Hashgreen updates on: Recapping the CAT standard upgrade and Hashgreen\'s actions.","image":"./assets/banner.png"},"prevItem":{"title":"Picturing the Future Development in Chia: A Trusted Gateway System","permalink":"/blog/blog-1-a-trusted-gateway-system"},"nextItem":{"title":"Weekly Update #17","permalink":"/blog/weekly-update-17"}},"content":"![banner](./assets/banner.png)\\n\\nHello Chia holders and Hashgreen\'s friends, welcome back to another Hashgreen\'s weekly update.\\n Last week, there was a bit of turmoil after [Chia](https://www.chia.net) posted an announcement in their [Twitter](https://twitter.com/chia_project/status/1551615648404422656?s=20&t=BPFATPgoK1yx8eETSe_VVQ), stating that the [Chia Asset Token (CAT)](https://chialisp.com/docs/puzzles/cats/) standard will be upgraded and CAT1 will be officially end-of-life (EOL) and replaced with CAT2. \\n \\nIn weekly update #18, we\'re going to tell you about this incident, explaining what were the actions that we took in response to CAT2 standard and how [Hashgreen DEX](https://hash.green/)\'s approach enforces trading security.\\n\\n### Timeline of Chia\'s actions ##\\n\\n>\\nJul 26, 2022 upgrading the CAT standard

\\nJul 26, 2022 around 10am PDT (after block height 2,311,760) CAT1 EOL

\\nJul 27, 2022 v1.5.0 live

\\nJul 28, 2022 blog post updated

\\nJul 30, 2022 CAT1 vulnerability explained\\n\\n### What happened? ###\\n\\nWithin a few days, Chia continued to release a series of updates and announcements, finishing upgrading the CAT standard, bringing v1.5.0 live, and explaining what exactly was the vulnerability of CAT1 standard coin after the upgrade was finalized. \\n Details are included in their [blog post](https://t.co/yEvX2e9RBC).\\n\\nLuckily, this \\"Cat Bleed\\" was never exploited, confirmed by Chia\'s team.\\n The concern was raised by [Trail of Bits](https://www.trailofbits.com/), a security auditor which helps Chia to audit, addressing \\"a potential class of vulnerabilities that led the team to uncover a security vulnerability with CAT1\\". \\n To summarize it, the issue was a potential vulnerability that could be exploited by anyone to print as many fake CATs as they want.\\n Chia later released [a technical article](https://t.co/jbCSJKwpCO) explaining the vulnerability they uncovered for CAT1.\\n\\nChia also suggested actions for users and CAT issuers to follow in order to move forward from the EOL to CAT2. \\n Users are advised to download 1.5.0 client, cancel their offers, check their CAT1 balance, and wait for the airdrop of CAT2 from issuers. \\n CAT issuers are provided with an official tool for the re-issuance.\\n\\n### Actions for Hashgreen ### \\n\\n>\\nJul 26, 2022 halting all trading activities

\\nJul 27, 2022 reminding users to keep up-to-date

\\nJul 27, 2022 Chia\u2019s official wallet and API trading back in our DEX

\\nJul 28, 2022 trade resumed as issuers re-issuing their tokens \\n\\nHashgreen were able to react after the news came out on July 26th. \\n We quickly took actions, incorporating frontend, backend, and operations to adapt to the change. \\n We halted all CAT trading activities and offer uploading from our API and [tweeted the information](https://twitter.com/HashgreenLabs/status/1552110066677202944?s=20&t=jyVNiZ91VcNkR3lIv3tB8w) to the public, reminding users and token issuers what they should do and be aware of about the upgrade. \\n Before the release of [Chia Blockchain 1.5.0](https://github.com/Chia-Network/chia-blockchain/releases/tag/1.5.0), we had also hidden all the CAT1 markets to prepare for CAT2\'s data migration from [TAIL Database](https://www.taildatabase.com/).\\n\\nTo prevent any exploit from happening, Chia suggested users to cancel offers that have been uploaded or shared on the internet, especially those providing XCH for CAT1s.\\n With our approach of [aggregating offers](https://docs.hash.green/blog/2022/01/29/introducing-hashgreen-dex#:~:text=a%20download%2Dfree,guaranteed%20by%20chialisp.), you don\'t have to cancel offers that you uploaded to our DEX since, essentially, no one will be able to take down any of it once all the trading activities are halted. \\n\\nOur team were able to upgrade Hashgreen DEX and resume all the trading activities hereafter as the CAT issuers continued re-issuing their coins.\\n Once again, if you are a trader, we recommend you to update to v1.5.0 as soon as possible and please beware that CAT1 is no longer acknowledged by Chia\'s wallet. \\n\\n:::info\\nPlease beware that CAT2 has a different asset ID than its CAT1 version.\\n:::"},{"id":"/weekly-update-17","metadata":{"permalink":"/blog/weekly-update-17","source":"@site/blog/weekly-update-17/index.md","title":"Weekly Update #17","description":"Hashgreen updates on: tutorial pop-up page, my orders pagination, adjusting landing page on the mobile, and update for amm.","date":"2022-07-25T00:00:00.000Z","formattedDate":"July 25, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"tutorial","permalink":"/blog/tags/tutorial"},{"label":"rwd","permalink":"/blog/tags/rwd"}],"readingTime":2.51,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #17","date":"2022-07-25T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","cryptocurrency","mit","startup","dex","amm","tutorial","rwd"],"description":"Hashgreen updates on: tutorial pop-up page, my orders pagination, adjusting landing page on the mobile, and update for amm.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #18","permalink":"/blog/weekly-update-18"},"nextItem":{"title":"Weekly Update #16","permalink":"/blog/weekly-update-16"}},"content":"![banner](./assets/banner.png)\\n\\n\ud83c\udf31 Hello Chia holders and Hashgreen readers, welcome back to another weekly update. \\n In the [previous update](https://docs.hash.green/blog/weekly-update-16), we explained two fundamental ideas in decentralized finance (DeFi), that is, [order books](https://docs.hash.green/blog/weekly-update-16#what-is-an-order-book) and [swaps](https://docs.hash.green/blog/weekly-update-16#what-is-a-swap). \\n Some of you may already know these concepts, but we believe a succinct explanation is needed to let everybody know what\'s going on and what product they are using.\\n\\nThis week, we have a few updates that we would like to tell you about. \\n:::note tl;dr\\ntutorial page, my orders pagination, adjustment of landing page on the mobile, and the update for amm.\\n:::\\n\\n## What\'s Been Done ##\\n\x3c!--Tutorial--\x3e\\n- The tutorial for [Hashgreen DEX](https://hash.green/dex) is out now!\\n Considering the complexity and the novelty of DEX, we release a tutorial segment as a guidance for users who are new to our page or not familiar with the landscape of DeFi. \\n\\n
Figure: Tutorial will pop out for first time users.
\\n
\\n\\n
\\n

\\n\\n- We will guide you through the main features of Hashgreen DEX, in the hope that you will quickly understand how to trade in Hashgreen DEX. \\n (You can also visit our [Docs](https://docs.hash.green/) for more information. :sparkling_heart:)\\n\\n
Figure: Follow the steps to learn key features and how to trade.
\\n
\\n\\n
\\n\\n
Figure: You can always find the tutorial here in the navigation bar.
\\n
\\n\\n
\\n

\\n\\n\x3c!--my orders pagination--\x3e\\n- We\'ve added pagination in `My Orders`. \\n A page can display up to 8 transactions, and below the panel lay the pagination buttons where you can click to see your transactions collated and presented in different pages.\\n\\n
Figure: Click different pages to view your orders.
\\n
\\n\\n
\\n

\\n\\n\x3c!--rwd for ldp--\x3e\\n- Our team has made a few adjustments to the appearance of our landing page on different mobile devices. \\n\\n## What\'s Rolling ##\\n- We at [Hashgreen](https://www.hashgreen.net/) have had some gradual progress along the way building the AMM. \\n The development is now in full swing. \\n Our team has almost finished the smart contract\'s high-level design and only micro adjustments are needed for future implementation. \\n We want to secure a seamless end-to-end trading experience in which our dApp interacts smoothly with the connected wallet.\\n\\n- Concrete plans of tokenomics and functionalities will be out around early September, and the same goes for the whitepaper. \\n We will release an alpha version, \\"Alpha Testing\\", on the testnet and start testing it around early November. \\n Alpha Testing is opened to community members on Testnet10.\\n You are absolutely welcomed to join our Alpha Testing and if you do so, you can accrue alpha tester status (possibly rewards!).\\n Once we make sure everything is well prepared and settled after Alpha Testing, we will formally launch the service, set to release in 2023, on Mainnet. \\n By the time \\"Mainnet Launch\\" gets going, it will be available to everyone, accompanied by the releasing of Hashgreen token. \\n\\n![timeline](./assets/timeline.png)"},{"id":"/weekly-update-16","metadata":{"permalink":"/blog/weekly-update-16","source":"@site/blog/weekly-update-16/index.md","title":"Weekly Update #16","description":"Hashgreen updates on: trading and swapping explained","date":"2022-07-14T00:00:00.000Z","formattedDate":"July 14, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"order book","permalink":"/blog/tags/order-book"},{"label":"swap","permalink":"/blog/tags/swap"}],"readingTime":3.21,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #16","date":"2022-07-14T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","order book","swap"],"description":"Hashgreen updates on: trading and swapping explained","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #17","permalink":"/blog/weekly-update-17"},"nextItem":{"title":"Weekly Update #15","permalink":"/blog/weekly-update-15"}},"content":"![banner](./assets/banner.png)\\n\\nHello Hashgreen readers, welcome back to another week of Weekly Update! \\n\\nLast week, we released an update targeting mobile device users and since then we\'ve received some genuine feedback from [reddit](https://www.reddit.com/r/chia/comments/vsjeyk/hashgreen_weekly_update_15_07062022_a_more/?utm_source=share&utm_medium=web2x&context=3). \\n Thank you again for always willing to give us constructive advice, and we will continue working on providing a better experience to the users of [Hashgreen DEX](https://hash.green/dex).\\n At the same time, we will keep developing and building more services for the community on [Chia Blockchain](https://www.chia.net/). \\n\\nThis week we would like to introduce two essential components in [DeFi](https://en.wikipedia.org/wiki/Decentralized_finance), that is, order books and swaps, and share with you the difference and the pros and cons for each design.\\n\\n## What is an Order Book?\\n:::note definition\\nAn order book refers to an electronic list of buy and sell orders for an asset organized by the price. \\n:::\\n\\n- An order book is widely used in traditional trading markets such as the stock market. \\n Generally, it shows a smooth and aggregated view of a specific financial instrument. \\n It comprises two sides, bidding and asking, dedicated to buyers and sellers. \\n\\n- In cryptocurrency, trading platforms such as the centralized exchange (CEX) or the decentralized exchange (DEX) often incorporate order books to display a variety of crypto assets for users to trade. \\n You probably have heard of [Binance](https://www.binance.com/) or [Coinbase Pro](https://pro.coinbase.com/). \\n They are the top CEXs that people visit and conduct trades. \\n\\n## Understanding Order Books\\n- Order books contain these main parts: bid and ask, price and amount, and order history. \\n\\n
Figure: Order book in Hashgreen DEX.
\\n
\\n\\n
\\n\\n**Bid and Ask**\\n- `bid` is an order in which buyers bid for a certain amount of shares at a particular price.\\n- `ask` is an order in which sellers ask for a specific price for their shares. \\n\\n**Price and Amount**\\n- An order book records two sides of the orders:\\n - `bid` side contains information such as all the bids, the amount they wish to purchase, and the price they are willing to pay.\\n - `ask` side resembles the bid side.\\n\\n- At the top of the order book is where the highest `bid` and the lowest `ask` prices are shown. \\n\\n**Order History**\\n- Order History records all the transactions that have occurred in the past, including both the `bid` and the `ask` sides.\\n\\n
Figure: Hashgreen DEX incorporates trade history into the page.
\\n
\\n\\n
\\n\\n## What is a Swap? \\n- When you are trading on DEX, you are carrying out trades in order books. \\n Transactions are only fulfilled by matching ask or bid orders that other people uploaded. \\n \\"Swap\\", in cryptocurrency, refers to exchanging the cryptocurrency you have for the equivalent value of another crypto. \\n\\n- Swaps offer greater flexibility in designing and constructing the transaction process and more essentially the agreement between two parties to exchange assets for a set period. \\n Examples of swaps in cryptocurrency that the majority of people would most likely use are [Uniswap](https://app.uniswap.org/#/swap) on Ethereum and [PancakeSwap](https://pancakeswap.finance/) on BNB Chain.\\n\\n## Why is Swapping More Immediate?\\n- Swapping provides an even better experience for great flexibility, high transaction efficiency, fair price, and efficient price discovery. \\n When you are buying something that must accept DAI, but you only have ETH, then it\'s a good time to swap.\\n\\n- Conceptually, trading and swapping are similar. \\n However, trading with order books usually requires deeper understanding of the design and functionalities of trading and order books, whereas swapping can be as simple as possible for users to execute.\\n\\n## Trading vs. Swapping\\n| | trading on DEX | swapping on AMM |\\n|----------------------|:--------------:|:---------------:|\\n| average waiting time | slower | quicker |\\n| transaction speed | tied | tied |\\n| price | inferior | fair |\\n| price discovery | less efficient | more efficient |"},{"id":"/weekly-update-15","metadata":{"permalink":"/blog/weekly-update-15","source":"@site/blog/weekly-update-15/index.md","title":"Weekly Update #15","description":"Hashgreen updates on: a more satisfying experience using mobiles to visit Hashgreen DEX.","date":"2022-07-05T00:00:00.000Z","formattedDate":"July 5, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"rwd","permalink":"/blog/tags/rwd"},{"label":"i18n","permalink":"/blog/tags/i-18-n"}],"readingTime":2.26,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #15","date":"2022-07-05T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","rwd","i18n"],"description":"Hashgreen updates on: a more satisfying experience using mobiles to visit Hashgreen DEX.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #16","permalink":"/blog/weekly-update-16"},"nextItem":{"title":"Weekly Update #14","permalink":"/blog/weekly-update-14"}},"content":"![banner](./assets/banner.png)\\n\\n\ud83c\udf31 Welcome back to another Weekly Update from Hashgreen, Chia\'s holders and friends! In the previous update, we talked about the updates and guidelines for the translation project of Hashgreen DEX (you are always welcome to contact us via [Discord](https://discord.com/invite/KXvqv6cwAk) or [Twitter](https://twitter.com/HashgreenLabs) to suggest a language or offer to help with the translation), and this week we have brought you an important update especially for mobile device users.\\n\\n## What\'s Been Done ##\\n- Thanks to the help from our translators, German has been updated to our DEX!\\n\\n- Users can now enjoy a better and smoother experience using mobile devices to visit [Hashgreen DEX](https://hash.green/)! What are the differences that you see? :face_with_monocle: Tell us your [feedback](https://discord.com/invite/KXvqv6cwAk)!\\n\\n
Figure: Try it out for yourself on the phone!
\\n
\\n\\n
\\n\\n- Our team has updated the interface of our DEX to make it render well with mobile devices, granting users an optimal experience no matter which mobile devices you are on. \\n\\n:::tip **Which devices do you use the most to visit our DEX? \ud83d\udcbb or \ud83d\udcf1?**\\nWhen would you use your phone to check our DEX instead of your computer?\\n:::\\n\\n- We did observe that there are a number of users who would visit our DEX on their phones from time to time and we believed that there indeed is some latent demand or at least some inherent tendency for the users to visit our website while they are checking their phones. \\n That\'s why we released this update, adjusting the layout and the aesthetic of our website, for users who opt for mobile devices. \\n\\n- One of the reasons we did not make this feature a high priority in our development schedule is due to the fact that users cannot trade with their phones. \\n There might be services that can solve this problem in the future, but for now it\'s not possible. \\n\\n- We [asked the community](https://twitter.com/HashgreenLabs/status/1543988394518548482?s=20&t=300xhsec8WSOyVD4D5ba7A) about what devices do you use the most when you visit our DEX, and the answer pretty much echoes with our observation. \\n According to our data in Google Analytics, around 80 percent of the users visit our DEX using their desktops, and 20 percent of them use mobile devices. \\n Isn\'t this interesting? \\n Although desktop users form the predominant part of our users, there is still demand and feedback from mobile device users. \\n\\n- If you have any questions regarding the update or you would like to offer help with the translation, please visit our [Discord](https://discord.com/invite/KXvqv6cwAk) or [Twitter](https://twitter.com/HashgreenLabs) and reach out to our members!\\n\\n## What\'s Rolling ##\\n- Our team is working on releasing an interactive introduction for users who visit our website for the first time."},{"id":"/weekly-update-14","metadata":{"permalink":"/blog/weekly-update-14","source":"@site/blog/weekly-update-14/index.md","title":"Weekly Update #14","description":"Hashgreen updates on: i18n project for DEX.","date":"2022-06-28T00:00:00.000Z","formattedDate":"June 28, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"i18n","permalink":"/blog/tags/i-18-n"}],"readingTime":1.855,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #14","date":"2022-06-028","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","i18n"],"description":"Hashgreen updates on: i18n project for DEX.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #15","permalink":"/blog/weekly-update-15"},"nextItem":{"title":"Weekly Update #13","permalink":"/blog/weekly-update-13"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\nWelcome back to another weekly update for [Hashgreen](https://www.hashgreen.net/)! It\'s been a great week continuously developing our product, and this week we are going to give you an update on the translation project for [Hashgreen DEX](https://hash.green/) and also some random updates of Hashgreen! \\n\\n- Hashgreen members were having a monthly meet last Friday! Monthly meets are one of the great ways to keep everyone connected, especially when the members are all working remotely. \\n\\n- We are going to have an office space in Taipei! \\n\\n### Updates on the i18n project for Hashgreen DEX ###\\n- Last week, we began the translation project for Hashgreen DEX using [Crowdin](https://crowdin.com/), a cloud-based localization management platform that enables both collaborative translation and management, and we\'re lucky to have multiple volunteer translators to help us with our product. \\n So far, we\'ve had 11 project members assisting us with the project and in total 9 languages listed to be translated. \\n\\n- Again, we are constantly looking for volunteer translators or proofreaders to help us, so if you are interested in it, please don\'t hesitate to contact us via contact@hashgreen.net or visit our [Discord](https://discord.com/invite/KXvqv6cwAk) for more information.\\n\\n- For translators and proofreaders, we prepared a tutorial and some guidelines on how to complete the translation and what they should pay attention to when translating. \\n Below are general explanations to the process of translation:\\n 1. **Achieving \\"conceptual equivalence\\" in each of the source and target languages.** \\n The translation should convey the same meaning as the source language, and it should also remain natural and acceptable in the target language.\\n 2. **Limited length of source string due to the design of the interface.** \\n Try not to let the translation surpass the original text length. \\n 3. **Completion rate of translation above 95% is the parameter.** \\n The translator should complete at least 95% of the translation, otherwise the translation will not be updated to our DEX. We will update languages that meet the parameter on a periodic basis.\\n\\n- Your assistance is always one of the most precious things that we deeply appreciate, and in order to express our gratitude, there might be some random surprises given to those who help us with the translation project. \ud83d\ude1c"},{"id":"/weekly-update-13","metadata":{"permalink":"/blog/weekly-update-13","source":"@site/blog/weekly-update-13/index.md","title":"Weekly Update #13","description":"Hashgreen updates on: live market trading chart and language switch option.","date":"2022-06-20T00:00:00.000Z","formattedDate":"June 20, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":2.555,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #13","date":"2022-06-020","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Hashgreen updates on: live market trading chart and language switch option.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #14","permalink":"/blog/weekly-update-14"},"nextItem":{"title":"Weekly Update #12","permalink":"/blog/weekly-update-12"}},"content":"![banner](./assets/banner.png)\\n\\nGood morning Chia \ud83c\udf31, Chia\'s holders and Hashgreen\'s readers! We are back again for another weekly update. We are excited to share with you some updates for [Hashgreen DEX](https://hash.green/), including the live market trading chart and the language support that comes back. Without further ado, let\'s get started!\\n\\n## What\'s Been Done ##\\n\\n- Live market trading chart is now officially released in [Hashgreen DEX](https://hash.green/)!\\n Open your trading page and try it out for yourself! Over the past weeks, our team has dedicated to the work of visualization and the facelift of the user interface according to this new feature update. \\n\\n
Figure:\u2728Brand new interface with the live market chart.\u2728
\\n
\\n\\n
\\n\\n:::note \\nWhen there\'s a huge amount of data, it usually takes longer time to load. \ud83d\ude2c\\n:::\\n\\n- With the live market trading chart, you are able to click through different market pairs to view the real time changes and the history of the difference in price laid out for each market pair. \\n You can decide on your own to select the range of time or the price scale at different intervals, and the chart will change its display correspondently to your adjustments. \\n\\n
Figure: Click here to change the frequency of data aggregation.
\\n
\\n\\n
\\n\\n
Figure: X-axis marks the time. Select different date ranges here.
\\n
\\n\\n
\\n\\n
Figure: Y-axis marks the price. You can choose between different price scales here.
\\n
\\n\\n
\\n

\\n\\n- The chart will also track your mouse movements and show you the price at a certain point of time when you hover your mouse within the market chart.\\n\\n
Figure: The chart will display the price according to where you lay your mouse in the chart.
\\n
\\n\\n
\\n

\\n\\n- Language switch option is now back at Hashgreen DEX! \\n It\'s now located at the right of the navigation bar and changed into a `\ud83c\udf10` button in which a drop down menu will come up and show the languages we support. Currently we have the support for English, Spanish (Latin America), Traditional Chinese, and Simplified Chinese. We will continue to add more languages in the future. \\n\\n
Figure: Click the button to choose the language.
\\n
\\n\\n
\\n

\\n\\n## What\'s Rolling ##\\n- Although we\'ve already had four languages supported now at Hashgreen DEX, we still would like to support as many languages as possible. \\n We posted an announcement at our [Discord](https://discord.com/invite/KXvqv6cwAk) two weeks ago, asking for volunteer translators to help us. \\n Up to now, we\'ve had a few volunteers who are willing to help!\\n And we still need more people to help!\\n We are now looking for volunteer translators and proofreaders.\\n If you\'re interested and would like to help, please visit our [Discord](https://discord.com/invite/KXvqv6cwAk)!\\n\\nWe are always grateful for the help and support you provided to us, and thank you again for the love and support!"},{"id":"/weekly-update-12","metadata":{"permalink":"/blog/weekly-update-12","source":"@site/blog/weekly-update-12/index.md","title":"Weekly Update #12","description":"Hashgreen updates on: recap of AMA at Chia in Chia and committed and uncommitted offers.","date":"2022-06-14T00:00:00.000Z","formattedDate":"June 14, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"nft","permalink":"/blog/tags/nft"}],"readingTime":3.97,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #12","date":"2022-06-014","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","nft"],"description":"Hashgreen updates on: recap of AMA at Chia in Chia and committed and uncommitted offers.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #13","permalink":"/blog/weekly-update-13"},"nextItem":{"title":"Weekly Update #11","permalink":"/blog/weekly-update-11"}},"content":"![banner](./assets/banner.png)\\n\\nWelcome back to another Hashgreen\'s weekly update! Previously on [Weekly Update #11](https://docs.hash.green/blog/weekly-update-11) we talked about the design features that began to take shape for the AMM, hankering for the best outcome to our users and to the ecosystem. We also announced a few updates and a call for volunteer translators. If you are willing to help with the translation, please visit our [Discord](https://discord.com/invite/KXvqv6cwAk).\\n\\nThis week we will be taking you through two topics: the AMA we attended earlier this June and our thought and expectation for offer2 according to the feedback from the community.\\n\\n## Hashgreen at Chia in China\'s AMA ##\\n\\n### What Chia is trying to solve with its NFT standards ###\\n\\nIn the AMA held by Chia in China, we introduced our products and talked about offer features and Chia\'s NFT standards. Below are three factors we mentioned about Chia\'s NFT during the AMA, namely what Chia is trying to solve and realize with its NFT standards.\\n\\n- **Autonomous offer trading: to trade without authorization from a third-party platform.** \\n \\n Chia does not need you to authorize a third-party platform to operate for you. \\n This could fundamentally prevent users from getting scammed. \\n\\n- **Decentralized Identifier (DID): to verify the authenticity and to prove the ownership.**\\n \\n Has it ever happened to you when you bought an NFT and later discovered that it was an impersonation scam? \\n This is what Chia wants to solve with its [NFT1 standard](https://www.chia.net/2022/05/11/our-vision-for-chia-nfts.en.html). \\n DID is like a digital identification that confirms the authenticity. \\n With such method, creators or project owners can have their NFTs connected with their DIDs, proving the ownership with the digital identity.\\n\\n- **Royalty: to pay profit-sharing to the author of an NFT.** \\n \\n How many percent of royalty payment should be given to the author of an NFT is what Chia\'s figuring out and this is going to be one of the core ideas for NFT1.\\n\\nChia\'s NFT is definitely a worthy path to take and a pull factor that attracts developers, investors, and users to come, especially when there\'s a variety of paths such as DEX, NFT, and DeFi that people have embarked on to develop or build Chia\'s infrastructure. \\n\\nRegardless of which path you are going to take or have taken, we, Hashgreen, are always pouring ourselves into helping these projects, including NFTs. Most importantly, providing a steady and strong base for Chia\'s community is what we expect and choose to do to allow all tokens in Chia to be able to trade. \\n\\n## Committed and Uncommitted Offers ##\\n\\n### What we think offer2 can hold for us ###\\n[Offer files](https://www.chia.net/offers/) (\u201doffers\u201d, \u201coffer1 standard\u201d) have been one of the biggest drivers for the community activities in Chia, as it provides a p2p way for people to trade trustlessly and securely. As one of the first adopters of offer1, we love it so much that we start to think what we ultimately want it to evolve into based on the feedback of many DEX users. We heard these feedback:\\n\\n- **Why does my attempt to fulfill the offer fail?** \\n\\n Ok, so this relates to how current offers are structured: they are not *commitments* on the chain to indicate token swap intentions, but merely a *memorandum of understanding*. The offer makers can withdraw their offers any second by spending the recorded coins in the offer, while you, the offer taker, have to check if the coin still exists beforehand. \\n \\n Can we make this process better? Yes! In fact, the offers should be on chain with two possible exit paths: either via settled swaps or clawback after some timeout. You can be assured that the offer is still 100% valid as long as you peek into the coins and you know for how much longer they will continue to remain valid. \\n \\n- **Is there a limit price I can put? Partial fill?**\\n \\n *No limit price. No partial fills. Ouch.*\\n \\n This is most of our experience with the current DEX on Chia, and we understand it so much more. We would call it lack of feature rather than a bug for offer1, as the logic for limit price and partial fills are very custom to *fungible tokens*. The logic for offer1 is perfect, for example, for NFTs as they need to be exchanged in whole. We think a good offer2 design should leave rooms to house some custom logic, including things like \u201callowing transactions to go through as long as prices are above this price\u201d and \u201cself re-instantiation if certain conditions are met\u201d.\\n \\nFrom an AMM building perspective, we think having an offer2 that satisfies the above criteria would allow an easier exchange of funds, thus increasing liquidity and capital efficiency in the Chia Blockchain. So, rest assured folks, while Hashgreen Labs continues to build on Chia!"},{"id":"/weekly-update-11","metadata":{"permalink":"/blog/weekly-update-11","source":"@site/blog/weekly-update-11/index.md","title":"Weekly Update #11","description":"Hashgreen updates on: AMM\'s design features, i18n for DEX, and scam alert","date":"2022-06-07T00:00:00.000Z","formattedDate":"June 7, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"offer","permalink":"/blog/tags/offer"}],"readingTime":2.415,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #11","date":"2022-06-07T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","offer"],"description":"Hashgreen updates on: AMM\'s design features, i18n for DEX, and scam alert","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #12","permalink":"/blog/weekly-update-12"},"nextItem":{"title":"Weekly Update #10","permalink":"/blog/weekly-update-10"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n\\n### AMM\'s Design Features Explained ###\\n\\nHi Chia holders! We at Hashgreen have some updates on the long awaited AMM! Over the past weeks, while we have implemented basic building blocks for the smart schemes, more importantly we are composing these blocks to ensure users have great experience trading and participating in our ecosystem.\\n\\n- **A sustainable token and distribution scheme for the Hashgreen ecosystem:** \\n \\n We want to bake our tokenomics directly into our AMM by highly incentivizing the first batch of supporters for their rapid adoption. On the other hand, we are considering allowing not only liquidity providers to earn (liquidity mining), but also protocol owners \u2014 each and every one who owns the Hashgreen token \u2014 to earn. \\n \\n- **Fair pricing of token pairs:** \\n \\n We all know there are huge Miner Extracted Values (MEVs) in the Ethereum ecosystem, and especially when it comes to trading, miners can easily manipulate the orders of contract interaction in their favor. \\n Chia Blockchain does not have this problem, and we enforce a rule of single price per block to prevent market manipulation. Everyone who interacts with the AMM gets the same price and does not get front-run. \\n \\n- **Name your slippage tolerance and commitment period:**\\n \\n When you put orders in to buy from/sell to the AMM, on top of the assured fair prices, you can additionally specify a maximum slippage tolerance you are willing to accept, and until when the order is valid.\\n These fully adjustable parameters will make interactions with AMM a very familiar experience compared to existing ones you have used before.\\n\\nThere are many more design features we are currently working out! If you have questions, feel free to shoot message at our [Twitter](https://twitter.com/HashgreenLabs) or [Discord](https://discord.com/invite/KXvqv6cwAk)!\\n\\n## What\'s Rolling ##\\n\\n- Language switch option is about to be released again in the near future! \\n As we would like to support as many languages as possible, we are looking for volunteer translators! \\n If you are interested in providing help, please head to our [Discord server](https://discord.com/invite/KXvqv6cwAk) and write a message in #translators or DM `@HG | Daisy` and `@HG | James` to let us know. \\n\\n- Lately we\'ve noticed that there\'s some impersonation scams in Chia\'s community and people have been affected by it. \\n Thanks to the community\'s effort and your report, we were able to identify it and withdrew it from circulation in our DEX. \\n Please be extra careful when you make any transaction, and make sure you have a full understanding of the background of the tokens you\'re going to trade. \\n The effort in identifying and terminating scams is also attributed to the token listing mechanism in our DEX, where the data is reviewed after being imported from TAIL database API. \\n We are currently working on adding warning messages in the DEX to help you and please keep careful watch for potential scams whenever you trade."},{"id":"/weekly-update-10","metadata":{"permalink":"/blog/weekly-update-10","source":"@site/blog/weekly-update-10/index.md","title":"Weekly Update #10","description":"Hashgreen updates on: User ID and user feedback.","date":"2022-05-31T00:00:00.000Z","formattedDate":"May 31, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"offer","permalink":"/blog/tags/offer"}],"readingTime":4.04,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #10","date":"2022-05-31T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","offer"],"description":"Hashgreen updates on: User ID and user feedback.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #11","permalink":"/blog/weekly-update-11"},"nextItem":{"title":"Weekly Update #9","permalink":"/blog/weekly-update-9"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\nOver the past week, we\'ve had [Goby](https://www.goby.app/) successfully integrated into [Hashgreen DEX](http://hash.green/) and we\'ve also shared an interesting discovery made possible via a tool we developed that analyzes and reifies blockchain activities on Chia. \\nIf you\'d like to see more of the cool graph analysis, please visit our tweet [here](https://twitter.com/HashgreenLabs/status/1529884518345322502?s=20&t=-dqCN0qI5_KyatFeZeRe5w) and join the discussion.\\n\\n### Transaction Fee and Chia\'s Coin Set Model ###\\n- We received some feedback from you related to the mechanism of transaction fee and the [coin set model](https://docs.chia.net/docs/04coin-set-model/intro) that Chia uses. \\nChia released in [Chia Blockchain 1.3.4](https://github.com/Chia-Network/chia-blockchain/blob/main/CHANGELOG.md#:~:text=When%20making%20an%20offer%2C%20makers%20can%20now%20create%20an%20offer%20including%20a%20fee%20to%20help%20get%20the%20transaction%20into%20the%20mempool%20when%20an%20offer%20is%20accepted) the function of allowing makers to create an offer with a fee in order to help get the transaction onto the blockchain. \\nAccording to the release, now when you want to make an offer in Hashgreen DEX, you can always add a transaction fee via Chia wallet or Goby wallet to ensure the priority of your offer in the queue. (See [Best Chia Projects Bootstrapped on Hashgreen DEX](https://docs.hash.green/blog/airdrop-on-hashgreen-dex#what-is-the-dust-storm) for more.) \\n\\n- Sometimes problems such as `amount higher than spendable balance` would occur when you try to make an offer. This is likely due to the characteristics of Chia\'s coin set model:\\n\\n> According to [an article](https://www.chia.net/2021/07/13/a-vision-for-defi-in-chia.en.html) written by [Bram Cohen](https://twitter.com/bramcohen), he explains in the second paragraph:\\n- *The only persistent data is the current set of unspent coins, which have sizes and rules about how they can be spent.* \\n- *When a coin is spent it can make new coins using its value but the original coin is gone forever.*\\n\\n- Take the following scenario as an example: You have 20 USDS in your wallet and you\'d like to create an offer to buy 1 XCH for 10 USDS. \\n\\n - Due to Chia\'s coin set model, your 10 USDS may consist of different coins in one package. \\n Possibilities of the actual allocation could be: (A) one coin sized 20 USDS, (B) two coins sized 18 USDS and 2 USDS, or (C) whichever amount of coins that sums up as 20 USDS, depending on how the original transaction looks like or how many coins that are originally in your wallet. \\n As you make the transaction, it sends the entire amount (or the highest amount of coin that you have) to the blockchain, then the change will be sent back to you.\\n\\n - In such a case where you have one single coin sized 20 USDS, your coin will be sent to the blockchain, destroyed, and split into two coins of 10 USDS, one of which will be spent, while the other will be given back to you. \\n Before the transaction is sent to the full nodes (mempool, actually) and waiting to be included in the blockchain, you may not be able to make another offer since technically you don\'t have any coins available to be spent in your wallet. \\n\\n - Therefore, whenever you try to create another offer, you won\'t be able to do so, and that alert message `amount higher than spendable balance` will show up to remind you.\\n\\n### User ID ###\\n- If you are transitioning from one device browser to another, you can use `user ID` to migrate your order and trade records. \\nPreviously on [Weekly Update #6](https://docs.hash.green/blog/weekly-update-6), we mentioned the function of user ID and how to use it. We would like to elaborate on this function, explaining more about the use and things for you to notice. \\n\\n- Users can import trade records from one device or browser to another. \\nPlease note that user ID is bound to the browser you\'re using. In other words, it will vary depending on the browser or device that you use. When the data migration is done, the original user ID will become invalid, which means you can no longer see the trade records in the original one.\\n\\n- Data migration will not be affected by the status of your wallet connection.\\n\\n## What\'s Rolling ##\\nTwo weeks ago we had a [Twitter poll](https://twitter.com/HashgreenLabs/status/1526258001916530688?s=20&t=-dqCN0qI5_KyatFeZeRe5w) asking for your feedback about the integration of Goby wallet, and we received a handful of your feedback for the update. We would like to invite you to tell us about your thought of using Hashgreen DEX.\\n\\n### Feedback wanted ###\\n- Now we are looking for users to share with us your feedback.\\nIf you\'re interested in helping us improving our product, drop a message in our [Discord channel](https://discord.gg/KXvqv6cwAk) #ideas-and-feedback or tag `@HG | Daisy` and `@HG | James` in #general to let us know! Or you can just tell us about your feeling of using Hashgreen DEX and what can we improve directly at #ideas-and-feedback. Feedback is always wanted and appreciated! \\n\\n- Example feedback questions:\\n - Your experience using our DEX\\n - Opinions of the functions or design we\'ve had\\n - Any idea of tools or functions that can be integrated into our product"},{"id":"/weekly-update-9","metadata":{"permalink":"/blog/weekly-update-9","source":"@site/blog/weekly-update-9/index.md","title":"Weekly Update #9","description":"Hashgreen updates on: Goby wallet integration, and syncing order history.","date":"2022-05-23T00:00:00.000Z","formattedDate":"May 23, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"my orders","permalink":"/blog/tags/my-orders"},{"label":"wallet integration","permalink":"/blog/tags/wallet-integration"}],"readingTime":2.77,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #9","date":"2022-05-23T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","my orders","wallet integration"],"description":"Hashgreen updates on: Goby wallet integration, and syncing order history.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #10","permalink":"/blog/weekly-update-10"},"nextItem":{"title":"Weekly Update #8","permalink":"/blog/weekly-update-8"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n- [Goby wallet](https://www.goby.app/) has officially been integrated into [Hashgreen DEX](http://hash.green/)! \ud83e\udd29 \\n You can now make or take offers for [Chia Asset Tokens (CATs)](https://chialisp.com/docs/puzzles/cats/) directly in the browser. Enter the amount you wish to trade in Hashgreen DEX to match offers! \\n\\n- We\'ve received many valuable feedback, especially those from [our Twitter poll](https://twitter.com/HashgreenLabs/status/1526258001916530688?s=20&t=u8Yun-WenkZv9UeSwjz1Rg) since the release of Goby wallet integration on the testnet last week.\\n It seems like the majority of you are all hyped up about the integration of Goby wallet into Hashgreen DEX, so am I! Our team has begun modifying and adjusting details of the integration since last week, and we will keep on making sure that Hashgreen DEX and Goby are well-coordinated. \\n * We modified the notification message of wallet connection\'s status to give users a more definite indication. \\n * We fixed the bug in which the displayed address of the wallet was not synced with Goby.\\n\\n### 3 Steps to Trade with Goby Wallet in Hashgreen DEX ###\\n\\n:::note Prerequisites\\nPlease make sure you have installed Goby web extension with any of the supported browsers and have your Goby wallet ready.\\n:::\\n\\n1. Connect to Goby\\n\\n
Figure: Hit \\"Connect Wallet\\" at the navigation bar and a tab \\"Choose Wallet\\" will show up.
\\n
\\n\\n
\\n\\n
Figure: Choose Goby as the wallet to connect.
\\n
\\n\\n
\\n\\n
Figure: Connected! You are good to go.
\\n
\\n\\n
\\n

\\n\\n2. Check wallet information\\n\\n
Figure: Once it\'s connected, your address will be shown. Click to check wallet information.
\\n
\\n\\n
\\n\\n
Figure: You can copy your wallet address and disconnect your wallet here.
\\n
\\n\\n
\\n

\\n\\n3. Start trading\\n\\n- Hit the offer in `Order Book` to trade\\n
Figure: Hit the offer you\'d like to take and hit \\"Trade\\" once trade info shows up.
\\n
\\n\\n
\\n\\n
Figure: An independent tab will pop up from Goby. Hit \\"Sign\\" to approve the offer.
\\n
\\n\\n
\\n

\\n\\n- `Make Offer` directly in Hashgreen DEX\\n
Figure: Enter the amount directly in this section. Hit the arrow if you\'d like to switch.
\\n
\\n\\n
\\n\\n
Figure: Once the amount is entered, unit price will be shown and you will be able to hit \\"Trade\\".
\\n
\\n\\n
\\n\\n
Figure: An independent tab will pop up from Goby. Hit \\"Sign\\" to approve the offer.
\\n
\\n\\n
\\n

\\n\\n:::important Few things to be aware of...\\n* As you make a new offer on DEX, Goby will automatically create a same offer in the wallet.\\n* If the transaction fails on DEX, make sure to cancel it in Goby as well.\\n:::\\n\\n## What\'s Rolling ##\\n- Our development team is working on syncing data between different devices. We discovered the demand and benefit of syncing data across different devices, and it would be natural and more convenient for users to track their orders (i.e. `My Orders` in DEX), granting the fact that transactions are conducted via different devices of the same user."},{"id":"/weekly-update-8","metadata":{"permalink":"/blog/weekly-update-8","source":"@site/blog/weekly-update-8/index.md","title":"Weekly Update #8","description":"Hashgreen updates on: light/dark scheme and Goby wallet integration on the testnet","date":"2022-05-16T00:00:00.000Z","formattedDate":"May 16, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"wallet integration","permalink":"/blog/tags/wallet-integration"}],"readingTime":2.62,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #8","date":"2022-05-16T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","wallet integration"],"description":"Hashgreen updates on: light/dark scheme and Goby wallet integration on the testnet","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #9","permalink":"/blog/weekly-update-9"},"nextItem":{"title":"Weekly Update #7","permalink":"/blog/weekly-update-7"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n- Our team has finally released an official update for the light/dark scheme in [Hashgreen DEX](https://hash.green/) after fixing some bugs that occurred when switching between schemes. \\n We\'ve also made small adjustments to the color composition of the page in different schemes to increase readability. You can set up dark mode by clicking the switch button at the navigation bar. \\n\\n- We\'ve also worked through a few bugs of the frontend interface, making sure that your feedback is received and dealt with at all times.\\n\\n## What\'s Rolling ##\\n- Wallet integration for [Goby](https://www.goby.app/) is coming! \ud83d\ude0d\\n The development team has been devoting to finalizing wallet integration into our DEX, and now we are one step away from the one-click trading experience that you\'ve all been waiting for. Before the launch of Goby integration, which will soon be announced, we would like to invite you to help us test the wallet integration on the testnet and give us some feedback. (Instructions are given below.)\\n\\n- We have also started a poll at our [Twitter](https://twitter.com/HashgreenLabs/status/1526258001916530688), inquiring your feedback of which part of the integration that you love the most and which part of it can be improved. \\n After you\'ve tried it out at the testnet, please visit the page, vote, and leave us a comment. You can also visit #ideas-and-feedback channel at our [Discord](https://discord.com/invite/KXvqv6cwAk) to share with us what\'s your thought about it.\\n\\n:::note How Can you help to test the wallet integration?\\nWe will create a test market **TFRIES/TXCH** at the testnet and upload enough offers of **TFRIES requetsing TXCH** for you to make offers. You can also create offers with either one of the coins.\\n:::\\n\\n### Follow the Steps to Test Goby Wallet Integration ###\\n1. Make sure you have installed [Goby](https://www.goby.app/) wallet in your PC.\\n2. Enter [Hashgreen DEX\'s testnet](https://testnet10.hash.green/dex/TFRIES-TXCH). \\n3. Connect your Goby wallet with Hashgreen DEX. \\n\\n
Figure: Hit \\"Connect Wallet\\" at the navigation bar and the tab \\"Choose Wallet\\" will show up.
\\n
\\n\\n
\\n\\n
Figure: Choose Goby as the wallet to connect. Then a tab will pop up.
\\n
\\n\\n
\\n\\n
Figure: Type your password to unlock your Goby wallet.
\\n
\\n\\n
\\n\\n
Figure: You have successfully \\"Connected with Goby\\".
\\n
\\n\\n
\\n\\n

\\n\\n4. Switch from Mainnet to Tesetnet10 in your Goby wallet.\\n * Open your Goby wallet web extension.\\n * Go to Setting.\\n * Hit Advanced Options.\\n * Hit Networks.\\n * Change from Mainnet to Testnet10.\\n\\n:::tip Tip\\nOnce you\'ve switched from Mainnet to Testnet10, the color of your Goby web extension should change from green to blue. That\'s one way to tell if you have done it successfully. \ud83d\ude0f\\n:::\\n\\n5. Visit [this page](https://testnet10-faucet.chia.net/) and paste your address **(It will be a long string beginning with \\"txch\\")** to collect TXCH. You may wait several minutes until TXCH is received.\\n6. Go back to the trading page to make offers with TFRIES/TXCH. \\n7. Give us your feedback at our [Twitter](https://twitter.com/HashgreenLabs/status/1526258001916530688) or [Discord](https://discord.com/invite/KXvqv6cwAk)."},{"id":"/weekly-update-7","metadata":{"permalink":"/blog/weekly-update-7","source":"@site/blog/weekly-update-7/index.md","title":"Weekly Update #7","description":"Hashgreen updates on: brand new landing page, and live market status.","date":"2022-05-09T00:00:00.000Z","formattedDate":"May 9, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"market statistics","permalink":"/blog/tags/market-statistics"},{"label":"landing page","permalink":"/blog/tags/landing-page"}],"readingTime":1.575,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #7","date":"2022-05-09T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","market statistics","landing page"],"description":"Hashgreen updates on: brand new landing page, and live market status.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #8","permalink":"/blog/weekly-update-8"},"nextItem":{"title":"Weekly Update #6","permalink":"/blog/weekly-update-6"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n- Our team has released a brand new landing page of [Hashgreen DEX](https://hash.green/). \\n Over the past week, We\'ve renovated the look of our landing page, including a few navigation components. We\'ve also added a live market status menu in the landing page, allowing you to instantly check upon the trade information at the landing page. \\n\\n\x3c!-- pic of the LDP --\x3e\\n
Figure: A brand new landing page is out!
\\n
\\n\\n\\n\\n
\\n\\n\x3c!-- pic of the scroll function --\x3e\\n
Figure: Scroll down to browse the current market status in the landing page.
\\n
\\n\\n\\n\\n
\\n\\n- You can browse the trading pairs or you can type in the search bar to search for the markets. \\n Once you\'ve identified the trading pair, you can hit the Trade button at the right end of the live status, and you will be directed to the exact trading page in Hashgreen DEX without having to select the market pair again. \\n\\n\x3c!-- pic of the search bar --\x3e\\n
Figure: Type here to view the live market status!
\\n
\\n\\n\\n\\n
\\n\\n\x3c!-- pic of the trade button --\x3e\\n
Figure: Hit the button to trade. It will lead you directly to the trading page.
\\n
\\n\\n\\n\\n
\\n\\n## What\'s Rolling ##\\n- The development team has been striving to release major updates that we planned to integrate into Hashgreen DEX.\\n In light of the situation that we decided to prioritize and focus on the major updates, the release for an optimal internationalization will be postponed. The language switch will therefore be temporarily taken down for maintenance in the near future.\\n\\n- The team has been working on an update for the light/dark scheme. We will optimize the switch and release it soon."},{"id":"/weekly-update-6","metadata":{"permalink":"/blog/weekly-update-6","source":"@site/blog/weekly-update-6/index.md","title":"Weekly Update #6","description":"Hashgreen updates on: multi-offer upload, new design of my orders, order book UI, and product facelift.","date":"2022-04-29T00:00:00.000Z","formattedDate":"April 29, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"my orders","permalink":"/blog/tags/my-orders"},{"label":"order book","permalink":"/blog/tags/order-book"}],"readingTime":3.085,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #6","date":"2022-04-29T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","my orders","order book"],"description":"Hashgreen updates on: multi-offer upload, new design of my orders, order book UI, and product facelift.","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #7","permalink":"/blog/weekly-update-7"},"nextItem":{"title":"Best Chia Projects Bootstrapped on Hashgreen DEX","permalink":"/blog/airdrop-on-hashgreen-dex"}},"content":"![banner](./assets/banner.jpg)\\n\\nHello to all the readers, who have stayed with [Hashgreen](https://www.hashgreen.net/) along the way! \\n\\nMy name is James, the newly hired community lead of Hashgreen. I will take charge of the Weekly Update series and carry on providing information for future product updates. Harry will still publish tech blogs from time to time, leading you through finer details of Blockchain technology related to Chia and Hashgreen.\\n\\nOver the month, the Chia community seems to have been less active than before, yet with the recent release of [Chia Blockchain 1.3.4](https://github.com/Chia-Network/chia-blockchain/releases/tag/1.3.4). As for us, we have made a few updates on [Hashgreen DEX](https://hash.green/). \\n\\n## What\'s Been Done ##\\n\\n- Over the past few weeks, our DEX development team has implemented multi-offer upload into the web interface to make the process of transactions quicker and easier! \\n Users can now upload multiple [offer files](https://www.chia.net/offers/) simply by clicking the upload button or dragging and dropping offer files directly into the page. \\n\\n
Figure: You can now upload more than one offer file!
\\n
\\n\\n\\n\\n
\\n\\n- A new design of open orders and order history (now called my orders) is released.\\nIt\'s easier now for you to check the status of your orders and even make adjustments to it with a few clicks. Details of the trade information will be shown in the display board. The two dropdown menus at the top allow you to filter certain types of offers that you wish to see. You can also cancel your offer using the cancel button in the action column. Or you can cancel multiple offers by selecting them at once. \\n \\n
Figure: Click all markets or all status to manage your orders.
\\n
\\n\\n\\n\\n
\\n\\n- Our team has updated a new interface for the order book, in which we re-oriented the menu of the offers.\\n Offers asking or bidding a certain coin will be aligned with each other. You are able to expand or close the panels, to either compare the asking and bidding price or leave the order book with only one of the offers presented.\\n\\n
Figure: You can zoom in to see specific types of offers.
\\n
\\n\\n\\n\\n
\\n\\n- We have released an update for the header! We add a control button where old headers are put together with the user ID button that was temporarily removed. Light/dark scheme switch and language options are moved to the header as well. \\n\\n
Figure: User ID allows you to sync between different devices.
\\n
\\n\\n\\n\\n
\\n\\n
Figure: Here is the button to copy your user ID.
\\n
\\n\\n\\n\\n
\\n\\n
Figure: To merge records, press import once you enter your user ID.
\\n
\\n\\n\\n\\n
\\n\\n- We\'ve continued to iterate with new features in the DEX, some of which are dedicated to the feedback from our [Discord community](https://discord.gg/KXvqv6cwAk). \\n\\n## What\'s Rolling ##\\n\\n- AMM is still under slow but steady development. \\n Enabling AMMs on the Chia Blockchain turns out to be a really hard problem! If you\'d ask us when you will have HashgreenSwap to test out on the testnet, we expect it to be here in another two quarters! In the meantime, we are starting to think about the tokenomics for the Hashgreen Token, to not only allow the profits to circulate back to the community but also create an active and healthy scheme that lasts long.\\n\\n- In order to ameliorate the user experience, the UI/UX team will continue to remodel the web interface. \\n We are working hard on the new landing page besides a few more integrations!"},{"id":"/airdrop-on-hashgreen-dex","metadata":{"permalink":"/blog/airdrop-on-hashgreen-dex","source":"@site/blog/airdrop-on-hashgreen-dex/index.md","title":"Best Chia Projects Bootstrapped on Hashgreen DEX","description":"Here are some best projects on Chia Blockchain that you should follow. Hashgreen DEX is proud to have worked with these cool projects!","date":"2022-04-04T00:00:00.000Z","formattedDate":"April 4, 2022","tags":[{"label":"airdrop","permalink":"/blog/tags/airdrop"},{"label":"p2p","permalink":"/blog/tags/p-2-p"},{"label":"trivia","permalink":"/blog/tags/trivia"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":6.315,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Best Chia Projects Bootstrapped on Hashgreen DEX","date":"2022-04-04T00:00:00.000Z","authors":["stmharry"],"tags":["airdrop","p2p","trivia","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Here are some best projects on Chia Blockchain that you should follow. Hashgreen DEX is proud to have worked with these cool projects!","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #6","permalink":"/blog/weekly-update-6"},"nextItem":{"title":"Weekly Update #5","permalink":"/blog/weekly-update-5"}},"content":"![banner](./assets/banner.jpg)\\n\\nOver the months, since the release of [Chia Asset Tokens (CATs)](https://www.chia.net/2021/11/15/the-CATs-out-of-the-bag.en.html) and [Offer Files](https://www.chia.net/2022/01/12/chia-offers-are-here.en.html), we have seen a whole herd of CATs.\\nAt the time of writing, there are 289 CATs listed on [TAIL Database](https://www.taildatabase.com/), 580 CATs tracked on [spacescan.io](https://www.spacescan.io/xch/cat1/topTokens), and 72 CATs traded on [Hashgreen DEX](https://hash.green/).\\n\\nIn the past two weeks, we have implemented automatic tokens importing from TAIL Database, and starting this week, we will synchronize our CAT markets with them on a weekly basis.\\nOriginal (OG) tokens that are already listed with us will receive a blue checkmark to signify that we know what party is behind the token and where to contact the issuers.\\n\\nTo allow users to browse over CATs more efficiently, we categorize CAT markets into several types - stablecoin, NFT-like, meme tokens, platform tokens, and Chia official tokens.\\nYou can also search for and star your favorite tokens directly in the menu, saving you time and hassle to search up the CAT.\\n\\n
The new market selection menu allows you to quickly search up your CATs \ud83d\ude0d
\\n
\\n \\n
\\n\\nAs a DEX development team, we have seen various project teams during the period trying to engage their community in very creative ways.\\nSpecifically, there are a few different ways that we think are exciting that involve the Hashgreen DEX team in the loop, and we would like to share their experiences with you, in hopes of inspiring the future development of the Chia community.\\n\\n## Airdrop\\nAirdropping your tokens is the best way to get traction from the community.\\nAfter all, who doesn\'t love free tokens?\\nThere are a few project founders who have worked with us in the past to utilize our soon-to-be-released\u2122 airdrop tools.\\n\\n[Niocoin (NIOC)](https://niocoin.info/), [Nine (NINE)](https://n-chain.org/), [Fund My Laptop (FML)](https://fundmylaptop.com/), and [Zomb Studio (ZOMB)](https://www.zomb.studio/) are the projects that worked with us to airdrop their tokens, under the condition that token receivers have followed their social media accounts and Hashgreen\'s [Twitter](https://twitter.com/HashgreenLabs/) and [Discord](https://discord.gg/KXvqv6cwAk).\\n\\nOver the airdrop campaigns, we have tested several aspects of our code, including [blockchain reorgs](https://www.chia.net/assets/Chia-Business-Whitepaper-2021-02-09-v1.0.pdf), [duststorms](https://www.reddit.com/r/chia/comments/swrc4d/soooo_what_the_heck_is_a_dust_storm/), and our smart batch execution of airdrops.\\nResilience to these network conditions, and having a framework to minimize the impact of the UTXO (or coin set) model on the transaction execution are crucial for all the development teams on the Chia Blockchain.\\n\\n### What is a re-org (re-organization)?\\n\\nRe-orgs happen when there are temporary blockchain forks, and subsequent farmers ultimately choose one to continue, leaving the rest *re-org\'ed*.\\nWhat the users will experience is, that the supposedly settled transaction will revert from its temporarily confirmed status, and this feature of the blockchain is exactly why on Hashgreen DEX we employed a 16-block confirmation to allow you to track how sure the fund settlements are.\\n\\n### What is the dust storm?\\n[Reddit](https://www.reddit.com/r/chia/comments/swrc4d/soooo_what_the_heck_is_a_dust_storm/) explains it better than we do, but essentially some parties are spamming useless transactions on the blockchain, creating congestion and fee market at the same time.\\nTo note, this is perfectly normal - there is nothing shady with creating a dust storm, as blockchains are built to withstand these transaction requests.\\nThe dust storm transformed the Chia Blockchain into a place where all project developers and users are required to be aware of fees, which is healthy and sustainable.\\n\\nTo summarize, here are some catches with airdrops:\\n\\n:::tip Advantages\\n**Airdropping** brings high traction for your project since you directly provide them values, whether that value can ultimately be realized or not.\\n:::\\n\\n:::danger Caveats\\n**Airdropping** would unavoidably distribute a large number of your tokens to the wild so that there will be more supply than demand for a certain period that follows.\\nMake sure you have the corresponding plan to create demand by implementing events and platforms for people to meaningfully use your token.\\n:::\\n\\n\\n## Peer-to-Peer Token Offering\\nThere is a load of exciting NFT projects going on on the Chia Blockchain!\\nWhile the NFT standards are still under development, a few token communities are already offering fungible tokens that are promised minting rights, and some of them bootstrapped their NFT projects on Hashgreen DEX!\\n\\n[Space Marmots Premium (SM1)](https://spacemarmots.io/) and [Ultimate Farmer Club (UFCG)](https://twitter.com/HonestFarmer2) worked with us to utilize our market and order book API to automatically provide peer-to-peer offerings to the users.\\nThey combined have more than 100 successful token sales on Hashgreen DEX, and these events were very successful due to the project development teams\' swift actions and a diverse set of capabilities that [our trading API](https://docs.hash.green/dex/trading-api) provides.\\n\\n[Catmosphere (CATMOS)](https://catmos.io/) employed a cool strategy where they not only were selling their token at a price of 0.0010 XCH, but also offering a buy-back at 0.0011 XCH. \\nAll of these were done programmatically, and users can buy/sell the CATMOS token at will.\\nThe offerings provided an anchor to the price of CATMOS, and brought interest into the Catmosphere community and Hashgreen DEX.\\nOver the period, CATMOS was even the most traded asset on Hashgreen DEX!\\n\\n\\n### What can Hashgreen DEX API do?\\nWe offer a variety of functionalities from market exploration and public order book information, to private order management. \\nThe [market statistics endpoint](https://docs.hash.green/dex/trading-api#get-market-statistics) which provides real-time token price information and capitalization, is now being used by [TAIL Database](https://www.taildatabase.com/) and [XCH Universe](https://xchuniverse.com/) (Let us highlight you by reaching out to [contact@hashgreen.net](mailto:contact@hashgreen.net) if you are also using them!).\\n\\n:::tip Advantages\\n**P2P Offering** is a wonderful stage for NFT projects as we head into the heated development of NFT standards, which will be finalized sometime in the near future. \\nIt also provides the development team with sufficient funding to kick start their further larger-scale development.\\n:::\\n\\n:::danger Caveats\\n**P2P Offering** requires that you run a close-knit community group, and it is very prone to introduce user complaints when not enough updates are given back to the community.\\n:::\\n\\n## Trivia\\nAs many project devs have found out, community members love to accept challenges to pick their brains! \\n\\n[Space Marmots Premium (SM1)](https://spacemarmots.io/) and [Easter Egg (EGG)](https://easteregg.tk/) ran their exciting trivia events respectively on Groundhog Day and March 9th.\\nTheir formats are not exactly the same, but both involve a series of meticulously designed questions that lead to some web pages, further pointing to more carefully hidden links with [steganography](https://en.wikipedia.org/wiki/Steganography).\\nIn these links, community members can find their offer files for the CAT as a sweet reward.\\n\\nWe at Hashgreen had much fun co-hosting and spreading these events, and were more than happy to work with any project devs!\\n\\n:::tip Advantages\\n**Trivia** is the most intimate event you can host with your community. \\nIt sets up this *metaverse* for them so they learn the backstory of the project, tokens, and dynamics.\\nThey can even act as future advocates for your project!\\n:::\\n\\n:::danger Caveats\\nObviously, you cannot send out a large amount of your tokens on a trivia event - it is meant to be special and rewarding.\\nIt also takes quite some time to design the trivia questions and make them decently challenging but not excessively challenging, so your event ends within a defined time frame.\\n:::\\n\\n\\n## Summary\\n\\nWe talked about three different ways to kick start your Chia Asset Token (CAT) project: airdropping, peer-to-peer offering, and trivia games.\\nThere are a lot more CATs we are trading now on Hashgreen DEX, and we conveniently categorized them for you: stablecoins, NFT-like tokens, meme tokens, platform tokens, and official Chia tokens.\\nWe believe it is an exciting exploration scrolling through the different categories, and maybe you can find another cool project to follow in the long run!\\n\\nStart peer-to-peer trading today on Hashgreen DEX at [hash.green](https://hash.green/)."},{"id":"/weekly-update-5","metadata":{"permalink":"/blog/weekly-update-5","source":"@site/blog/weekly-update-5/index.md","title":"Weekly Update #5","description":"Hashgreen updates on: fee UX, market selection UI, and market stat API","date":"2022-03-21T00:00:00.000Z","formattedDate":"March 21, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"market statistics","permalink":"/blog/tags/market-statistics"}],"readingTime":2.17,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #5","date":"2022-03-21T00:00:00.000Z","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","market statistics"],"description":"Hashgreen updates on: fee UX, market selection UI, and market stat API","image":"./assets/banner.jpg"},"prevItem":{"title":"Best Chia Projects Bootstrapped on Hashgreen DEX","permalink":"/blog/airdrop-on-hashgreen-dex"},"nextItem":{"title":"Weekly Update #4","permalink":"/blog/weekly-update-4"}},"content":"![banner](./assets/banner.jpg)\\n\\n## What\'s Been Done\\n\\n- Over the past weeks, fees on the Chia Blockchain seems to be here to stay. \\n To allow our users get their transactions on chain quicker, we now provide users with the ability to supply fee by adding to the supplied Chia amount or removing from the requested Chia amount in their offers. \\n The suggested fee is hinted on the pop-up window for order book items, and is currently 0.0001 XCH.\\n We chose this number since it not only suffices to be on top of the mempool, but is miniscule (7 cents USD at the time of writing) for users.\\n In the future, we plan to implement more accurate fee estimators to give better fee hints and save you some bucks.\\n\\n:::note How is it done?\\n\\nWith Chia offers, Hashgreen is able to redirect the provided fees into a temporary address, then we generate a `SpendBundle` on the fly to spend the extra amounts as fee.\\nThis `SpendBundle` is then aggregated with the user offers before we push it to the Chia Blockchain.\\n\\n:::\\n\\n
Figure: These are two different options you can provide to match an offer you like
\\n
\\n\\n![fee-prompt](./assets/fee-prompt.jpg)\\n\\n
\\n\\n- We made it easier for users to submit your orders! \\n Simply copy the amounts provided in the pop-up panel when you hover on the offers you want to match against with the copy button.\\n You can also paste your offer file string directly on the web interface.\\n\\n
Figure: Here are the button to copy your preferred amounts to supply
\\n
\\n\\n![copy-fee](./assets/copy-fee.jpg)\\n\\n
\\n\\n
Figure: In the official Chia wallet, use this copy button to copy the raw offer file into your clipboard
\\n\\n![copy-offer](./assets/copy-offer.jpg)\\n\\n
Figure: Press this big paste button to upload your offer file
\\n\\n![paste-offer](./assets/paste-offer.jpg)\\n\\n- Many partners are starting to integrate our [Market Statistics API](/dex/trading-api#get-market-statistics) into their platforms.\\n The previous generation were slow and bulky, taking nearly 30 seconds to complete a call.\\n We have optimized it to return the results in under half a second.\\n\\n- New market selection menu is now available at [UAT interface](https://testnet10.hash.green/dex).\\n If you want the UAT interface to connect with mainnet, head to [UAT settings](https://testnet10.hash.green/dex/settings) and toggle on `PROD`.\\n\\n![market-selection](./assets/market-selection.jpg)\\n\\n- We fixed many bugs on the frontend interface, including incorrect display of order status (sometimes it shows \\"Confirming undefined\\"), and user token retrieval errors.\\n\\n## What\'s Rolling\\n\\n- The smart coin team is coding up the first version of AMM coin driver for an MVP AMM protocol.\\n As time goes on, we will gradually implement more standard functionalities in current AMMs!"},{"id":"/weekly-update-4","metadata":{"permalink":"/blog/weekly-update-4","source":"@site/blog/weekly-update-4/index.md","title":"Weekly Update #4","description":"Hashgreen updates on: price/trade API, fee support, product facelift, and massive token listing","date":"2022-03-10T00:00:00.000Z","formattedDate":"March 10, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":1.915,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #4","date":"2022-03-10T00:00:00.000Z","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Hashgreen updates on: price/trade API, fee support, product facelift, and massive token listing","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #5","permalink":"/blog/weekly-update-5"},"nextItem":{"title":"Weekly Update #3","permalink":"/blog/2022/03/02/weekly-update"}},"content":"![banner](./assets/banner.jpg)\\n\\n## What\'s Been Done\\n\\n- Over the weeks, we have been observing some users to submit deliberately mispriced orders and as a result, displacing the price reported in [market statistics](/dex/trading-api#get-trade-history).\\n We have adopted feedback from our [community member Bluemoon](https://discord.com/channels/920892922969354311/922958572407632024/943857984482738196) to filter trade prices according to the current order book. \\n The `price` field now is a stabler measure of the market.\\n For existing API users who require stable price sources, there is nothing you need to do; for developers who want to see all trades including the mispriced ones, please check out [Trade History API](/dex/trading-api#get-trade-history).\\n\\n- You can now access all market statistics with [Market Statistics API](/dex/trading-api#get-trade-history) by leaving the `market_id` field blank.\\n\\n- Over the course of the week, we added several tokens, including [Little Lambo Coin](https://littlelambocoin.com/), [Green Wings](https://wings.green/), and [Easter Egg](https://easteregg.tk/). \\n These community developers are have a blast with all kinds of activities!\\n Active participation from community members is a critical factor to a project\'s success, and we enjoy co-hosting all sorts of events to foster the communities.\\n\\n- We implemented support for fee on Hashgreen DEX and will soon roll out on the mainnet. \\n Under dust storm conditions, it might take a few hours to settle your trades, but now you will be able to optionally receive a little bit less XCH or pay a little more XCH as the network fee to expedite your orders.\\n The frontend will indicate the suggested fee according to network conditions, and usually a 0.0001 XCH will get your offers settled in no time!\\n\\n- The UI/UX team continues to implement the product facelift.\\n\\n## What\'s Rolling\\n\\n- Goby integration, after reaching out to the Goby team, turns out to be not possible at the time of writing since the ability to make offers from Goby is still being implemented.\\n Current integrations on other platforms rely on the offer taking feature, which has already been a part of previous Goby feature set. \\n As briefly explained in [a blog post](/blog/2022/01/29/introducing-hashgreen-dex), we believe an efficient DeFi system would require the operators aggregate the offers, so we are now waiting good news from the Goby team about the offer making functionality.\\n\\n- We soon will start listing all tokens on the [TAIL Database](https://www.taildatabase.com/), compacted in the new market selection menu.\\n You can even star your favorite CATs!"},{"id":"/2022/03/02/weekly-update","metadata":{"permalink":"/blog/2022/03/02/weekly-update","source":"@site/blog/2022-03-02-weekly-update/index.md","title":"Weekly Update #3","description":"Hashgreen updates on: community airdrop tools, integration with taildatabase & Goby, and AMM","date":"2022-03-02T00:00:00.000Z","formattedDate":"March 2, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"chialisp","permalink":"/blog/tags/chialisp"}],"readingTime":2.34,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #3","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","chialisp"],"description":"Hashgreen updates on: community airdrop tools, integration with taildatabase & Goby, and AMM","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #4","permalink":"/blog/weekly-update-4"},"nextItem":{"title":"Weekly Update #2","permalink":"/blog/2022/02/14/weekly-update"}},"content":"![banner](./assets/banner.jpg)\\n\\nThis is a long overdue update to the community!\\nDuring the past two weeks, we are looking at other aspects of development on the Chia Blockchain.\\n\\n## What\'s Been Done\\n\\n- We worked with many project developers, including [NINE](https://n-chain.org/), [NioCoin](https://twitter.com/NioCoinInfo), [Zomb Studios](https://www.zomb.studio/), and [FundMyLaptop](https://fundmylaptop.com) on their airdropping campaign with our in-house airdrop tools.\\n The need for such a tool for project developers cannot be overstated, and we managed to test it fairly thoroughly over the duststorm, sending out thousands of transactions on Chia.\\n The airdrop tools is aimed for a open source later this month.\\n\\n- The chialisp team is developing a chialisp library that enables secure smart coin development on Chia, much like [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts) on Ethereum.\\n The goal is to not only establish a set of tools for easier smart coin development, but also re-implement some standards (e.g., [CATs](https://chialisp.com/docs/puzzles/cats)) for these advanced developers to understand the use case.\\n Below is an sneak peek on the square root function we implemented which would be a core utility function for AMMs!\\n\\n```lisp\\n(\\n ;; Babylonian method for square root.\\n \\n (defun cypher.math.sqrt-loop-babylonian (var var1 var2)\\n\\n (if (> var1 var2)\\n (cypher.math.sqrt-loop-babylonian\\n var var2 (/ (+ (/ var var2) var2) 2))\\n var1\\n )\\n )\\n\\n (defun cypher.math.sqrt (var)\\n (if (> var 3)\\n (cypher.math.sqrt-loop-babylonian var var (+ (/ var 2) 1))\\n (if (> var 0) 1 (if (= var 0) 0 (x)))\\n )\\n )\\n)\\n```\\n\\n- The backend team wrapped up integration with the [TAIL Database](https://www.taildatabase.com/).\\n We now have all the community CATs in our database, and once the new market selection menu is rolled out, you will be able to easily search up token markets! \\n\\n- The UI/UX team worked through the first draft on the user interface refactor on Figma. \\n\\n- We onboarded a frontend engineer, Henry, to help with mobile wallet integration. \\n He will work with Goby wallet to enable that one-click trading experience. \\n\\n## What\'s Rolling\\n\\n- Goby integration is apparently the most requested feature! \\n However, unlike [offerpool](https://offerpool.io/) and [offerbin](https://offerbin.io/), Hashgreen implements our technology to be an *offer aggregator* so the raw offer files are never exposed to fellow users.\\n We instead ask the wallet to upload a counter-offer to our website, which we can then be combined with existing offer on Hashgreen for blockchain execution.\\n\\n- Due to the shear number of CATs out there, we are prioritizing the market selection menu refactoring.\\n The upgraded menu would allow you to easily navigate hundreds of CATs, star your favorite ones, and group CATs by their types.\\n\\n- We noticed that there is a need for a robust transaction micro-service to handle dApp requests, especially during the duststorm where fee is non-zero and when everyone suffers.\\n This transaction micro-service will not only deterministically make sure a transaction is delivered, but also provide on-chain fee estimates for our upcoming dApps."},{"id":"/2022/02/14/weekly-update","metadata":{"permalink":"/blog/2022/02/14/weekly-update","source":"@site/blog/2022-02-14-weekly-update/index.md","title":"Weekly Update #2","description":"Hashgreen updates on: USD quotes in API, i18n inclusion of Chinese and Spanish, and AMM initial discussion","date":"2022-02-14T00:00:00.000Z","formattedDate":"February 14, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"trading api","permalink":"/blog/tags/trading-api"},{"label":"amm","permalink":"/blog/tags/amm"}],"readingTime":2.11,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #2","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","trading api","amm"],"description":"Hashgreen updates on: USD quotes in API, i18n inclusion of Chinese and Spanish, and AMM initial discussion","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #3","permalink":"/blog/2022/03/02/weekly-update"},"nextItem":{"title":"Weekly Update #1","permalink":"/blog/2022/02/07/weekly-update"}},"content":"![banner](./assets/banner.jpg)\\n\\n## What\'s Been Done\\n\\n### API Access\\n\\n[Trading API](/dex/trading-api) has been the biggest update for the week. \\nWe are committed to provide a diverse set of API for developers so the community can grow with us.\\nAt the same time, we would like you to be explicit about the usage of Hashgreen APIs in your products to spread the words!\\nLet us know your story and the creative use of both open market information and statistics.\\n\\n- We added USD quotes and USD volume in the [market stat](/dex/trading-api#get-market-statistics) endpoint.\\n The fully diluted market cap for the base currency in USD (the token in the front of the trading pair) is also provided as a ball park measure of how big the token is.\\n \\nNote that the reference prices are only estimates are can be vulnerable to self-trading exploits.\\nPlease do not use currency price quotes directly in mission critical systems but only as a good reference.\\n\\n\\n### User Interface\\n\\n- The frontend team has been working hard on i18n (check out the [beta site](https://testnet10.hash.green/dex)), and will be soon be pushed to the production site.\\n We are offering Chinese and Spanish as a taste test, and are preparing for a community-based translation campaign!\\n\\n![i18n](./assets/i18n.jpg)\\n\\n- The aforementioned market statistics are now displayed as a part of the market header. \\n You can easily judge market liquidity based on the USD volume.\\n\\n![i18n](./assets/market-stat.jpg)\\n\\n- We\'ve also worked through a bunch of frontend bug fixes including market selection menu overflow and asset filter menu.\\n We won\'t bother detailing them but rest assured we are incorporating community feedback.\\n\\n\\n## What\'s Rolling\\n\\n- Now that we have the fully diluted market cap, we are making a market overview menu to highlight the most traded and the highest cap tokens.\\n\\n- The fully diluted market cap does not holistically represent the true market capitalization as any whale can HODL the majority of the tokens.\\n What is more representative is the market cap based on circulating supply which can be tricky to automatically detect on Chia. \\n We are working on some smart algorithms to pick that up from the blockchain.\\n\\n- In the long run, we realize we need a more elegant product UI to streamline user experience.\\n The recently onboarded UI designer is starting to work hard on the refactor.\\n\\n- We had some very fruitful discussion on the mathematical design of automated market makers (AMM).\\n There are some pretty important implications translating everything from account-based to coin-based models, and we are pretty sure we nailed it correctly."},{"id":"/2022/02/07/weekly-update","metadata":{"permalink":"/blog/2022/02/07/weekly-update","source":"@site/blog/2022-02-07-weekly-update/index.md","title":"Weekly Update #1","description":"Hashgreen updates on: UI and trading API release","date":"2022-02-07T00:00:00.000Z","formattedDate":"February 7, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"trading api","permalink":"/blog/tags/trading-api"},{"label":"market statistics","permalink":"/blog/tags/market-statistics"}],"readingTime":2.245,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #1","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","trading api","market statistics"],"description":"Hashgreen updates on: UI and trading API release","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #2","permalink":"/blog/2022/02/14/weekly-update"},"nextItem":{"title":"Introducing the Hashgreen DEX","permalink":"/blog/2022/01/29/introducing-hashgreen-dex"}},"content":"![banner](./assets/banner.jpg)\\n\\nHappy lunar new year everyone!\\nThe Asia-based Hashgreen dev team had a great lunar new year over the past week!\\nWe find that our [Discord community](https://discord.gg/SESAPmJXFD) has been very active, and some updates might get buried under the exciting updates on new CAT tokens joining the family every other few days.\\nHence we are starting to update you about our technical progress on a weekly basis.\\n\\n## What\'s Been Done\\n\\n### User Interface\\n\\n- We added the light/dark scheme switch to make your eyes more comfortable, located in the footer section.\\n- Right beside the market selection button, there is a row of market statistics showing 24h high, 24h low, volume, and the current price.\\n\\n### API Access\\n\\n- To facilitate automatic trading, we released our [first API doc on trading](/dex/trading-api), including the ability to list markets, order books, and personal order creation/cancellation.\\n We envision more and more participants can be in this process to reach the best market efficiency, involving arbitrage loops across Hashgreen DEX and other exchanges.\\n In the loop, you will have to involve [Stably Prime](https://prime.stably.io) as they are the only stablecoin issuer on Chia right now.\\n\\n- The statistics of markets can now be retrieved via [stat API](/dex/trading-api#get-market-statistics).\\n In the first version, we provide 24-hour statistics on the traded volumes, and are working towards representing the volumes in USD.\\n\\n### Personnel\\n\\n- We onboarded a UI/UX designer, Ann, to help us improve our product further. \\n There are some complicated integration with our partners including the official Chia wallet, a in-development Chrome extension wallet, and potentially one other browser-based wallet.\\n We imagine the UX flow to be increasingly complicated, and hence it is time to involve specialists.\\n\\n## What\'s Rolling\\n\\n- I18n is coming! We aim to build Hashgreen DEX to be a platform everyone in the world can enjoy, and we soon will need your help to translate our product!\\n\\n- The smart contract team is working on several chialisp designs, which can be a pretty prolonged process as it requires not only security audit but implementation and integration with wallet partners.\\n One of the most immediate improvement to the Hashgreen DEX is to use an alternate version of offers to allow partial filling of offers.\\n\\n- The next critical piece for the on-chain economy and DeFi will be Automated Market Maker (AMM)!\\n AMM implementation on the Chia Blockchain will require some bells and whistles though, and we are working very hard to propose a first draft.\\n This set of chialisp implementation will not only be secure and fair from a user\'s perspectively, eliminating potential extractable values.\\n All of these are still in development, but we want to stay tuned for more exciting updates!"},{"id":"/2022/01/29/introducing-hashgreen-dex","metadata":{"permalink":"/blog/2022/01/29/introducing-hashgreen-dex","source":"@site/blog/2022-01-29-introducing-hashgreen-dex/index.md","title":"Introducing the Hashgreen DEX","description":"Hashgreen blog on: DEX release and philosophy","date":"2022-01-29T00:00:00.000Z","formattedDate":"January 29, 2022","tags":[{"label":"tech blog","permalink":"/blog/tags/tech-blog"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":12.405,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Introducing the Hashgreen DEX","authors":["stmharry"],"tags":["tech blog","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Hashgreen blog on: DEX release and philosophy","image":"./assets/hashgreen-dex-banner.jpg"},"prevItem":{"title":"Weekly Update #1","permalink":"/blog/2022/02/07/weekly-update"}},"content":"import { Icon } from \'@iconify/react\';\\n\\nHashgreen successfully released a decentralized exchange on Jan 12, 2022, in a joint live event with [Chia Network](https://chia.net).\\nIf you were not at the event with us, here is a clip of the presentation on the [Hashgreen Decentralized Exchange (DEX)](https://hash.green).\\n\\n\\n\\nChia Blockchain introduced its first on-chain atomic token swap standard, powered by the underlying smart coin language [Chialisp](https://chialisp.com).\\nUsing this standard, users can start exchanging tokens on the chain, including the Chia (XCH) token and other [Chia Asset Tokens (CATs)](https://chialisp.com/docs/puzzles/cats/).\\nThis functionality opens a lot of possibilities on the blockchain, including the first batch of dApps, with [Hashgreen DEX](https://hash.green) being one of them.\\n\\nWe at Hashgreen have been working hard for months to develop the project and integrate our interface into the official [Chia wallet](https://chia.net/download).\\nAfter the successful launch, we received many questions on how and why we decided to build [Hashgreen DEX](https://hash.green) this way.\\n\\nIn today\'s post, we want to take you through a journey - a journey on Chia\'s most basic technical building blocks, how and why we crafted the first DEX on the Chia Blockchain, and finally, how we envision DeFi will look like on Chia.\\n\\n## Prologue \\n\\nLet\'s not pretend this has never happened. \\nYou opened up your Chia wallet, trying to [exchange](https://hash.green/dex/XCH-USDS) some Chia (XCH) for some Stably USD (USDS) on the Hashgreen DEX.\\nThis popped out, saying you have a lot less *spendable balance* than you have *total balance*...\\n\\n![Oh No!](./assets/oh-no.jpg)\\n\\n...what happened! If I have all the XCH, why am I unable to send them all, or make an offer out of it? Well, UTXO is the main culprit here. \\n\\n## UTXO\\n\\nShort for *unspent transaction outputs*, this is nothing new and was introduced by Bitcoin. \\nInstead of having a balance sheet for every user on the blockchain, Chia tracks your funds using UTXOs (or, rather, *coin set* to be more accurate), which is a technically fancy way of referring to [coins](https://chialisp.com/docs/coins_spends_and_wallets/).\\nCoins have predefined ways to be spent, and are capable of producing coin outputs when they are spent.\\nMoreover, any given coin is only ever created once and spent once -- and that\'s it! \\nThis philosophy focuses on tracking the *change of state* on the blockchain as opposed to recording the whole state.\\n\\n:::info\\nYou can easily track how many coins are created in the blockchain using [explorers](https://xchscan.com/txns?block=1000001).\\n:::\\n\\nThe choice of using UTXOs on Chia leads to many interesting and advantageous properties:\\n\\n- The verification of coin spending is highly parallelizable since each coin can only have one interaction.\\n In contrast, account-model-based blockchains need to handle transactions sequentially.\\n\\n- The balance is a first-class citizen on the Chia Blockchain! \\n Instead of being a state stored in a mapping table, every coin on Chia has an explicit *amount*, the total of which has to stay constant. \\n (Well except when you farmed a block, you receive 2 XCH in total out of thin air.)\\n\\n- Since the transactions in a single block are *order-less* (i.e. their order does not matter as long as they are included in the block), the attack surface of smart contracts reduces drastically. \\n In other blockchains, we often hear the term *Miner Extractable Value (MEV)*, which refers to the profit that a miner could secure by manipulating the ordering of the transactions. \\n\\n:::info\\n[It is estimated](https://explore.flashbots.net/) that over $576M MEV, as of the time of writing, has been extracted from Ethereum.\\n:::\\n\\nWith these seemingly wonderful advantages, it sounds like a no-brainer that every chain should adopt this model as opposed to the account model.\\nApparently there are some trade-offs; trade-offs that takes additional effort to mitigate but are definitely worth it.\\n\\n### Implications to Users\\n\\nLet\'s hop back onto our spendable balance problem.\\n\\nWhen we make transactions, we are in fact spending a coin or coins that might sum up to more than what we try to send.\\nFor example, imagine you are a lucky farmer who farmed a 1.75 XCH coin and wish to send 0.1 XCH to your friend to let them HODL.\\nWhen you send the XCH, you are actually destroying the initial 1.75 XCH coin, creating a 0.1 XCH for your friend, and sending the rest 1.65 XCH back to yourself.\\nDuring the wait for the change coin to come back, your funds are effectively reduced, and that is why the Chia wallet shows a lower *spendable balance* as you cannot double-spend a coin.\\n\\n[Offers](https://www.chia.net/offers/) are more or less the same: as you create offers to exchange your tokens, you do not want to accidentally spend your coins and invalidate the offer.\\nThe Chia wallet was kind enough to *soft-lock* the coin so that it cannot be used, until you either cancel the offer or when the offer has been fulfilled.\\n\\n### Implications to Developers\\n\\nThe UTXO model, while having a significantly smaller attack surface than that of the account model, is trickier for protocol design.\\nIf you still remember, transactions in the same block are spent *simultaneously* and every coin is only spent exactly once. This implies that if we want to build a more advanced application, we have to design while keeping the ability to perform multiple interactions in mind.\\nTake a very basic application for example - an automated market maker (AMM).\\n\\nThe most renowned instance of an AMM is [Uniswap](https://uniswap.org/) where *swappers* would exchange their assets with a liquidity pool at a *market price* determined by the amount of assets held in the pool.\\nWhen Uniswap contracts are executed, they run sequentially, creating an interaction between the swapper and the pool each time.\\nYet on the Chia Blockchain, we cannot naively queue up user exchange requests sequentially, since there is only *one* pool with *one* coin present.\\nThis produces several challenges: For example, exchange operations would need to be aggregated somehow to interact with the pool together. \\nFurthermore, we need to ensure price fairness, resist against denial of service attacks, and overcome many other problems!\\n\\nThere are many proposed solutions on other UTXO-based blockchains, and for the sake of brevity, we will include the discussion in future posts.\\n\\n:::tip\\nIn short, clever design choices have to be made for dApps, but when smart contracts are carefully crafted, UTXO-based blockchains have better security guarantees and efficiency. \\n:::\\n\\n## Chia\'s Take\\n\\nBitcoin was successful, but as a *store of value*, not as a successful technological demonstration.\\nBram Cohen himself wrote about [how Chia\'s technical motivation stemmed from Bitcoin](https://www.chia.net/2021/05/27/Agrgregated-Sigs-Taproot-Graftroot.html), and as a last-mover, Chia was able to get things right the first try.\\n\\nOn day one, Chia shipped with the full capability to process smart contracts (or, smart coins, to be more accurate).\\nThe on-chain language, [chialisp](https://chialisp.com/), powers many existing features such as [singleton](https://chialisp.com/docs/puzzles/singletons), [Chia Asset Token (CAT)](https://chialisp.com/docs/puzzles/cats), and even [offers](https://chialisp.com/docs/puzzles/offers).\\nThe programs for smart coins themselves were not actually stored on-chain, but rather, its Merkle root hash is.\\nOne does not have to reveal the program until the coins are spent, thus greatly reducing the attack surface.\\nThese smart coin primitives are also extremely composable, giving developers building blocks for their decentralized applications.\\n\\nTo date, there is a prosperous community around CATs -- project developers issuing their own tokens and project followers HODLing and trading.\\nWe at Hashgreen believe there are more exciting things to come in the Chia ecosystem, but first, let us take a look at how we built the Hashgreen DEX and why it is designed in this way.\\n\\n\\n## Hashgreen DEX \\n\\n[Chia wrote an in-depth analysis](https://chialisp.com/docs/puzzles/offers#introduction) about how offers work technologically and how they can be used in dApps.\\nIn case you have not read it, here\'s a quick summary:\\n\\n:::info\\nOffers are serialized off-chain commitments to swap coins for coins.\\nAnyone can take that file and complete the other side of the swap, sending it to the blockchain to settle.\\nWithout the other half of the trade, no one would be able to spend your coins or steal your funds.\\n:::\\n\\nIt is intuitive that, you can send your offer files around in channels like [Keybase](https://keybase.io/team/chia_network.public) and [Discord](https://discord.com/channels/920892922969354311/936601952064782347), yet you will soon realize -- the prices you get are nowhere close to optimal.\\nLiquidity is plain disastrous with vanilla peer-to-peer trading, and this is the main push for more advanced dApps.\\nSome examples are [OfferBin](https://offerbin.io/) and [OfferPool](https://offerpool.io/) which provide offer upload, sorting, and download services.\\nThey operate just like Craigslist: users are responsible for submitting the offers, and pushing aggregated offers to full nodes on their own.\\n\\n### Problems We Solve \\n\\nInterestingly, Hashgreen did consider this solution, and we observed several potential problems with this Craigslist approach and ultimately went with our current DEX approach.\\n\\n\\n1. **User Contention**\\n\\n These Craigslist-like offer pastebins will ultimately face an unsolvable challenge with offer *contention*. \\n Concretely, contention happens when an offer was downloaded by different parties and spent in the same block. \\n In a fee market, the spends with lower fees will be discarded while the one with the highest fee will go through.\\n While the fee rule itself is totally fair, users with an honest intention to trade in the market but using lower fees will unwillingly have to give up and look for other trades.\\n\\n Most users do not experience contention now since the market velocity is relatively slow at this point, yet in some cases when there are sudden spikes in trades, contention will become obvious.\\n The SM1 token backed by Chris from The Chia Plot [went on a sale on OfferBin](https://thechiaplot.net/2022/01/21/first-major-sale-using-decentralized-chia-offers-mostly-successful/), and one unfortunate conclusion Chris drew was that *too many people* participating in the auction can cause problems on OfferBin, in line with what we discussed above.\\n\\n That is exactly why we opted for a download-free solution: instead of users bringing the offers home and making their counter-offers, we *aggregate* offers on two sides, immediately bringing both down from the order book, and pushing them to the chain on your behalf.\\n Not only are we unable to mess with your fund, but we also are unable to cheat you since the swaps are guaranteed by chialisp.\\n\\n2. **Scalability**\\n\\n We want there to be market makers in the game.\\n We want there to be arbitrageurs in the game.\\n We want there to be hobby day traders in the game.\\n None of these would be possible without an API interface that is easy to play with and use.\\n Hashgreen is drafting up documentation on trading API, which would be finalized soon. \\n After its release, we expect people to take advantage of other existing markets to form a closed loop to both stabilize the price and increase liquidity.\\n One interesting thing we have observed, at the time of writing, the [XCH/USDS pair](https://hash.green/dex/XCH-USDS) is typically higher in price than other XCH/USD pairs in different markets.\\n We hypothesize that many interested buyers are gradually entering the market, obtaining XCH with their freshly withdrawn Stably USD, and obviously someone else can obtain XCH at a slightly lower price in overseas markets.\\n\\n3. **Expandability**\\n\\n There are many plans from Hashgreen to upgrade our DEX.\\n To be a fully functioning DEX, one would typically expect there to be features like partial order fills, limit orders, and even market orders.\\n We\'ve identified some upgrade paths to the existing offers in order to support these features, and it wouldn\'t require a huge UX remake to integrate them.\\n On the contrary, it might be somewhat confusing to implement these features into Craigslist-like services.\\n\\n4. **Interoperability**\\n\\n News about automatic market maker (AMM) development is on the street. \\n Once an AMM is out on the market, we can easily hook you up to trade against AMMs with zero wait time for matching. \\n Plus, we are always working closely with the Chia team to create a smoother trading UX experience from Hashgreen DEX to your Chia wallet!\\n\\n\\n### Open Questions\\n\\nAdmittedly, several aspects need to be discussed in-depth about the DEX working principles, and we will briefly mention them here. \\n\\n- **Operator Extractable Values (OEV)**\\n\\n OEV not only covers the previously mentioned miner extractable values (MEV), but also covers the values extractable by aggregators like Hashgreen DEX.\\n In principle, if there are enough orders on the market, they can create an overlap in prices.\\n Aggregators, having observed this phenomenon, can pocket the spread by buying up the cheaper sell offer and selling off the more expensive buy offer simultaneously, pocketing the spread.\\n While we are honest and only match exact offers from two sides, it is not guaranteed that every aggregator will be a good actor.\\n In our preliminary exploration with AMMs, we have found some countermeasures to ensure aggregator honesty in a trustless manner with chialisp.\\n The detail of the mechanisms will certainly be revealed and explained in-depth after we release the product, but for the time being we would love to work behind the curtains for some more.\\n\\n- **Decentralization**\\n\\n [OfferPool](https://offerpool.io/) sets out to be another offer pastebin site to combat the *centralization* of offer files.\\n The arguments of anti-centralization do make sense up to a certain point, since those were the driving force behind the existence of blockchain technology.\\n However, when already operating on a decentralized infrastructure, how much more decentralization is required is debatable, as having scattered decentralized services might lead to inefficiency in the application.\\n Take an AMM for example, having more total values locked (TVL) in the protocol means that service users would enjoy a better price. \\n Despite being centralized in terms of capital concentration, not a single party is able to single-handedly control the capital since the rules behind the capital movement are crystal clear.\\n Hence we believe the better argument is that, the protocols need to be fully transparent to allow the blockchain to do its job at ensuring decentralized and trustless execution.\\n\\n## Summary\\n\\nWorking on the Chia Blockchain certainly brings many unique challenges to the Hashgreen team, and we want to tell you that this [MIT-based team](https://www.hashgreen.net/) is not afraid of challenges! \\n\\nAlong the way, we have heard of perspectives on Chia\'s development purely based on its price, but this is simply an unhealthy view on a tech-heavy project.\\nBeing one of the first developers on Chia, we are journeying through its infancy as well as you are, and enabling more and more applications on our way.\\nAt any given point in time, we might find ourselves having to make trade-offs in either protocol design or system deployment, but rest assured that we take a *first principled* approach with the user\'s best interest at top priority.\\nIn order for us to communicate these complex ideas with you, we are starting this blog to periodically fill you in with more development progress and technological insights for the Chia Blockchain.\\n\\nIf you have more questions, you can refer to the [FAQs](/) or follow us on social media ([Discord](https://discord.gg/4RbcEHGaTg) and [Twitter](https://twitter.com/HashgreenInc/)).\\nThanks for staying with us!"}]}')}}]); \ No newline at end of file diff --git a/assets/js/b2f554cd.f3e1c823.js b/assets/js/b2f554cd.f3e1c823.js new file mode 100644 index 0000000..e9d4ac1 --- /dev/null +++ b/assets/js/b2f554cd.f3e1c823.js @@ -0,0 +1 @@ +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1477],{10:function(e){e.exports=JSON.parse('{"blogPosts":[{"id":"/hashgreenswap-is-now-live-on-mainnet","metadata":{"permalink":"/blog/hashgreenswap-is-now-live-on-mainnet","source":"@site/blog/hashgreenswap-is-now-live-on-mainnet/index.md","title":"HashgreenSwap is now live on Mainnet!","description":"HashgreenSwap v1.0 is now live on Mainnet! Come and join us to celebrate our launch with our event and easily add liquidity or create liquidity pools for your favorite tokens on HashgreenSwap!","date":"2023-11-10T00:00:00.000Z","formattedDate":"November 10, 2023","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"mainnet","permalink":"/blog/tags/mainnet"}],"readingTime":5.58,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"HashgreenSwap is now live on Mainnet!","date":"2023-11-10T00:00:00.000Z","authors":["james"],"tags":["hashgreen","hashgreenswap","chia","blockchain","cryptocurrency","mit","startup","amm","mainnet"],"description":"HashgreenSwap v1.0 is now live on Mainnet! Come and join us to celebrate our launch with our event and easily add liquidity or create liquidity pools for your favorite tokens on HashgreenSwap!","image":"./assets/banner-blog.jpg"},"nextItem":{"title":"HashgreenSwap v0.3 Release","permalink":"/blog/hashgreenswap-v0.3-release"}},"content":"![banner-blog.jpg](./assets/banner-blog.jpg)\\n\\n[HashgreenSwap](https://hash.green/) v1.0 is now live on Mainnet! \\n\\nCome and join us to celebrate our Mainnet launch with the Mission Green Walker: Testnet Airdrop Claim event and easily add liquidity or create liquidity pools for your favorite tokens on [HashgreenSwap](https://hash.green/)!\\n\\n> [**Click here to explore HashgreenSwap and give it a try!**](https://hash.green/)\\n> \\n\\n# HashgreenSwap v1.0 Release\\n\\nWe are thrilled to announce the long-anticipated release of [HashgreenSwap](https://hash.green/) v1.0. This release brings a significant wave of improvements, reinforcing our commitment to providing a more stable and user-friendly decentralized trading experience.\\n\\n## Mission Green Walker: Claim Your Rewards for Our Testnet Airdrop!\\n\\n![blog-image-testnet-airdrop.jpg](./assets/blog-image-testnet-airdrop.jpg)\\n\\nDear green walkers,\\n\\nIn celebration of the HashgreenSwap Mainnet launch and as a token of our gratitude for your incredible support during the [Mission Green Walker testing program on Testnet](https://docs.hash.green/blog/HashgreenSwap-v0.1-is-now-live-on-testnet#mission-green-walkerstart-testing-with-hoogii), we are thrilled to announce an airdrop with a total reward of 1 million HG tokens! \\n\\n> **[Join the queue and claim your rewards HERE!](https://events.hash.green/mission-green-walker)**\\n> \\n\\nEligible participants are those who actively engaged in our Mission Green Walker testing campaign **between April 27th and August 31st**. Claiming your rewards is simple; Please visit the campaign page [here](https://events.hash.green/mission-green-walker) and follow the instructions below. \\n\\n- Step 1: Connect your Hoogii Wallet (make sure you are using the latest version) and share this exciting news on X (remember to set your account public).\\n- Step 2: Paste the link of your tweet back on the campaign page.\\n\\nThese Mission Green Walker events are our heartfelt expression of gratitude for your unwavering support as we advance and innovate within the Chia ecosystem. The claim process will be open for one week, running from Nov 6, 2023 to Nov 12, 2023, as indicated in our recent [Tweet](https://x.com/HashgreenLabs/status/1721367780124184750?s=20). Stay tuned for more updates on our [Twitter](https://twitter.com/HashgreenLabs) and [Discord](https://t.co/XycsnpDJbS). \\n\\n## Technical Update\u2014The Cycle of Building, Deploying, and Refining\\n\\nSoftware development involves an iterative cycle of building, deploying, and refining. Drawing upon the valuable feedback we gathered during Testnet, we were able to review what we had built and therefore set enhancing trading stability as our primary objective in order to deliver an optimized and secure experience. \\n\\n### Trading Stability Enhancement and UI/UX Update\\n\\nRefinements in the smart contract and the offer aggregator took place during this stage, so were those improvements in the user interface and the user experience design. You may not be aware of these changes in the first place, but they are the paved cornerstones that hugely contribute to the trading stability of HashgreenSwap. \\n\\n:::info\\n\\nDrop us a message to our Twitter or Discord and let us know how\u2019s your experience using HashgreenSwap. And if you are interested in the technical insights of HashgreenSwap, drop a message too! We may take this chance and shed some light on the topics of the smart contract or the offer aggregator.\\n\\n:::\\n\\n### Liquidity Pools Now Open!\\n\\n![Post_Liquidity Pool Creators Wanted.png](./assets/Post_Liquidity_Pool_Creators_Wanted.png)\\n\\nWe\'re thrilled to present you a chance to easily add liquidity or create a liquidity pool for your favorite CAT paired with XCH on HashgreenSwap! Don\'t miss out on this exciting opportunity!\\n\\nProviding initial liquidity requires you to abide by the following rules:\\n\\n- HashgreenSwap only supports XCH-CAT pairs now.\\n- You must contribute an equal value of both tokens in the pair.\\n- The ratio of tokens you add will set the price of this pair.\\n\\nBe the trailblazer and give it a try [here](https://swap.hash.green/liquidity/add)!\\n\\n### Open-Sourcing\u2014HashgreenSwap Smart Contracts\\n\\nThe HashgreenSwap smart contracts\xa0are the implementation of\xa0HashgreenSwap, an automated market maker (AMM) in\xa0[chialisp](http://chialisp.com/)\xa0language on the\xa0[Chia blockchain](https://www.chia.net/). If you would like to verify the smart contract, please visit the GitHub repository\xa0[here](https://github.com/hashgreen/hashgreenswap-contract).\\n\\n### HashgreenSwap API Service\\n\\nIf you are a more advanced user or developer interested in interacting with HashgreenSwap through an API, we recommend reading this documentation for the HashgreenSwap API Service, which can be found\xa0[here](https://swap-api.hash.green/docs).\\n\\n### Connect Wallet\u2014Hoogii, Goby, and More to Come!\\n\\n![blog_image_connect_wallet.png](./assets/blog_image_connect_wallet.png)\\n\\nIn this release, HashgreenSwap offers a wider selection of wallet choices for your convenience! During Testnet, we successfully integrated [Hoogii Wallet](https://hoogii.app/) as the initial connection for HashgreenSwap users. Now, we\'re thrilled to introduce even more wallets, providing you greater flexibility in managing assets on the Chia blockchain. \\n\\n- [Hoogii](https://hoogii.app/) is a fully open-source crypto wallet extension built on the Chia blockchain, available for download in Google Chrome Web Store.\\n- [Goby](https://www.goby.app/) is an open-source browser plugin wallet for Chia Network. Goby currently supports Google Chrome and Brave Browser.\\n\\nSelect the wallet that suits your preferences and embark on your journey with [HashgreenSwap](https://hash.green)! More to come\u2026\\n\\n## Information Update\\n\\n### The Landing Page and the Main Page\\n\\nTogether with the Mainnet launch of HashgreenSwap v1.0, we\u2019ve introduced several updates to both the landing page and the main page, providing the community with the most up-to-date information. Can you spot the differences? \ud83d\ude0f\\n\\n### White Paper Update\\n\\n![white-paper-update.jpg](./assets/white-paper-update.jpg)\\n\\nIn this release, we\u2019ve also had updates in the HashgreenSwap white paper. We\u2018ve adjusted the trading fee on HashgreenSwap to 0.9% (0.3% will go to the liquidity providers as rewards and 0.6% will go to HG token holders), a change that aligns with our ongoing efforts to provide competitive and user-friendly services to the community. \\n\\nFurthermore, our roadmap has been refined, ensuring the development remains on course. Our journey may have evolved slightly, but the overall vision and commitment to excellence remain steadfast. Visit the docs and check out the updates [here](https://docs.hash.green/)!\\n\\n### Get Started with HashgreenSwap\\n\\n*\u2014Check out the complete user guide for HashgreenSwap.*\\n\\n![Untitled](./assets/Untitled.png)\\n\\nWe are delighted to introduce a series of instructional pages, designed to be your ultimate guide for using HashgreenSwap. These clear and straightforward instructions have been carefully prepared for you to follow. Take a look at how to get started with HashgreenSwap [here](https://docs.hash.green/get-started)!\\n\\n- [Get Started](https://docs.hash.green/get-started) offers a step-by-step instruction to help you onboard, guiding you through the process of creating a wallet, acquiring XCH or CATS tokens, and connecting your wallet.\\n- On the [How to Trade on HashgreenSwap](https://docs.hash.green/how-to-trade-on-hashgreenswap) page, we provide detailed instructions of interface operations for each core function, including token swaps, zap, adding liquidity, and removing liquidity.\\n\\n## Our Message\\n\\nIt\'s been a significant journey of development leading up to the release of [HashgreenSwap](https://hash.green/) v1.0. It\u2019s incredible to reflect on the extensive work that has gone into optimizing and renovating only to give you a seamless experience.\\n\\nWe are excited to extend our invitation for you to explore [HashgreenSwap](https://hash.green/), give it a try, and share your thoughts with us. We deeply appreciate your invaluable support as we continue our mission to deliver the finest experience on the Chia blockchain. Your continued support fuels our journey, and we can\'t wait to share more with you.\\n\\n> HashgreenSwap: [https://hash.green/](https://hash.green/)
\\nFollow us on X: [https://x.com/HashgreenLabs](https://x.com/HashgreenLabs)
\\nJoin our Discord: [https://t.co/XycsnpDJbS](https://t.co/XycsnpDJbS)
\\nFollow us on LinkedIn: [https://www.linkedin.com/company/hashgreen-labs](https://www.linkedin.com/company/hashgreen-labs)\\n>"},{"id":"/hashgreenswap-v0.3-release","metadata":{"permalink":"/blog/hashgreenswap-v0.3-release","source":"@site/blog/hashgreenswap-v0.3-release/index.md","title":"HashgreenSwap v0.3 Release","description":"Version 0.3 of HashgreenSwap is now live on Testnet! This release brings significant enhancements to the user experience via singleton aggregation optimization and introduces exciting new features like price slippage and token selection.","date":"2023-06-20T00:00:00.000Z","formattedDate":"June 20, 2023","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap"},{"label":"hoogii","permalink":"/blog/tags/hoogii"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"testnet","permalink":"/blog/tags/testnet"}],"readingTime":3.41,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"HashgreenSwap v0.3 Release","date":"2023-06-20T00:00:00.000Z","authors":["james"],"tags":["hashgreen","hashgreenswap","hoogii","chia","blockchain","cryptocurrency","mit","startup","amm","testnet"],"description":"Version 0.3 of HashgreenSwap is now live on Testnet! This release brings significant enhancements to the user experience via singleton aggregation optimization and introduces exciting new features like price slippage and token selection.","image":"./assets/Banner-testnet-blog_04.jpg"},"prevItem":{"title":"HashgreenSwap is now live on Mainnet!","permalink":"/blog/hashgreenswap-is-now-live-on-mainnet"},"nextItem":{"title":"Join HashgreenSwap on Testnet: v0.2 Release","permalink":"/blog/join-hashgreenswap-on-testnet-v0.2-release"}},"content":"![Banner-testnet-blog_04.jpg](./assets/Banner-testnet-blog_04.jpg)\\n\\n# HashgreenSwap v0.3 Release\\n\\nVersion 0.3 of [HashgreenSwap](https://hash.green/) is now live on Testnet! This release brings significant enhancements to the user experience via singleton aggregation optimization and introduces exciting new features like price slippage and token selection. These improvements are aimed at preparing for the upcoming launch on Mainnet. Join us on Testnet to explore the latest updates and help us refine [HashgreenSwap](https://hash.green/) for a seamless experience on Mainnet!\\n\\n> **[Click here to visit our page and start testing!](https://hash.green/)**\\n\\n## Singleton Aggregation Optimization: Enhancing Trading Stability for a Seamless Experience\\n\\nTrading stability is of paramount importance to provide a smooth and reliable platform, and [HashgreenSwap](https://hash.green/) continuously strives to build a better trading environment for all green walkers within the Chia ecosystem. With this in mind, we are excited to introduce the implementation and optimization of **Singleton Aggregation**, a significant enhancement designed to further enhance trading stability. \\n\\nThrough meticulous fine-tuning and eliminating potential bottlenecks or inefficiencies, we have significantly improved the overall performance and reliability of [HashgreenSwap](https://hash.green/). This optimization ensures a seamless trading experience, enabling you to trade with confidence. We remain dedicated to our mission of providing the best possible platform, and trading stability remains at the forefront of our ongoing development efforts.\\n\\n:::info\\n\\nIf you would like to know more about native singleton aggregation, feel free to check out [this doc](https://docs.hash.green/features#native-singleton-aggregation) or join our [Twitter](https://twitter.com/HashgreenLabs) and [Discord](https://twitter.com/HashgreenLabs) to discuss with us!\\n\\n:::\\n\\n## Introducing Price Slippage\\n\\nIn this release, you now have more control over your transactions, ensuring successful execution even in volatile market conditions with the presence of **Price Slippage** options.\\n\\n![price_slippage.png](./assets/price_slippage.png)\\n\\nWhen using [HashgreenSwap](https://hash.green/), you can now select a slippage tolerance that aligns with your preferences, ranging from 0.1% to 5%. This feature empowers you to define the acceptable price difference between the time of your transaction initiation and its actual execution. By choosing an appropriate slippage tolerance, you can minimize the risk of unexpected price changes impacting your trade outcomes.\\n\\n:::tip What\u2019s Slippage Tolerance?\\n\\nSlippage tolerance refers to the maximum percentage price difference that you are willing to tolerate before your order stops filling or gets canceled. You can also learn more about slippage via [this article](https://www.investopedia.com/terms/s/slippage.asp) written by [Adam Hayes](https://www.investopedia.com/contributors/53677/) from [Investopedia.com](https://www.investopedia.com/).\\n\\n:::\\n\\n![minimum_received.png](./assets/minimum_received.png)\\n\\nPlease choose a slippage tolerance by clicking the setting button at the upper right corner of both the [Swap](https://testnet-swap.hash.green/swap) and [Liquidity](https://testnet-swap.hash.green/liquidity) pages. Once you have entered the desired amount you would like to trade, [HashgreenSwap](https://hash.green/) will display and confirm that the minimum (amount) received is guaranteed when you submit your transaction.\\n\\n## Select Token\\n\\n

\\n\\n

\\n\\nWith this update, navigating and trading in [HashgreenSwap](https://hash.green/) has never been easier. The **Select Token** feature allows you to effortlessly choose and search for the specific token you want to trade by simply typing its name or asset ID in the search bar. Finding your desired token is now just a few keystrokes away.\\n\\n![select_token.gif](./assets/select_token.gif)\\n\\nHow do I search and where can I select the token?\\n\\n- Navigate to the transaction page (either [Swap](https://testnet-swap.hash.green/swap) or [Liquidity](https://testnet-swap.hash.green/liquidity)) in HashgreenSwap.\\n- Hover the mouse over and click the token card (each has an arrow pointing downward).\\n- A modal with a search bar will pop up with a list of tokens displayed right below.\\n- Type the name or asset ID in the search bar. Once you find the token, click it to proceed!\\n- If it shows \u201cNo results found\u201d, please check your spelling and try again.\\n\\n## Our Message\\n\\nWe are pleased to have you join us for another update from [HashgreenSwap](https://hash.green/). We would like to invite you again to participate in testing [HashgreenSwap](https://hash.green/) on Testnet! Your feedback and support are invaluable to us as we strive to provide the smoothest experience on the Chia blockchain.\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit\xa0[our troubleshooting channel](https://discord.gg/YRksyTEmeq)\xa0for a quick check. If the problem still persists, please contact us and provide additional details through\xa0[the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756)\xa0in Discord.\\n\\n:::\\n\\n> HashgreenSwap: [https://hash.green/](https://hash.green/)
\\n> Follow us on Twitter: [https://twitter.com/HashgreenLabs](https://twitter.com/HashgreenLabs)
\\n> Join our Discord: [https://t.co/XycsnpDJbS](https://t.co/XycsnpDJbS)
\\n> Follow us on LinkedIn: [https://www.linkedin.com/company/hashgreen-labs](https://www.linkedin.com/company/hashgreen-labs)"},{"id":"/join-hashgreenswap-on-testnet-v0.2-release","metadata":{"permalink":"/blog/join-hashgreenswap-on-testnet-v0.2-release","source":"@site/blog/join-hashgreenswap-on-testnet-v0.2-release/index.md","title":"Join HashgreenSwap on Testnet: v0.2 Release","description":"HashgreenSwap v0.2 is launched on testnet! Join us and take a look at our brand new overview page, dynamic fee, and more!","date":"2023-06-08T00:00:00.000Z","formattedDate":"June 8, 2023","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap"},{"label":"hoogii","permalink":"/blog/tags/hoogii"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"testnet","permalink":"/blog/tags/testnet"}],"readingTime":4.3,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Join HashgreenSwap on Testnet: v0.2 Release","date":"2023-06-08T00:00:00.000Z","authors":["james"],"tags":["hashgreen","hashgreenswap","hoogii","chia","blockchain","cryptocurrency","mit","startup","amm","testnet"],"description":"HashgreenSwap v0.2 is launched on testnet! Join us and take a look at our brand new overview page, dynamic fee, and more!","image":"./assets/Banner-testnet-blog_03.jpg"},"prevItem":{"title":"HashgreenSwap v0.3 Release","permalink":"/blog/hashgreenswap-v0.3-release"},"nextItem":{"title":"HashgreenSwap v0.1 Is Now Live on Testnet!","permalink":"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet"}},"content":"![Banner-testnet-blog_03.jpg](./assets/Banner-testnet-blog_03.jpg)\\n\\nWelcome back to another update from HashgreenSwap. In today\u2019s blog, we will introduce the latest release of [HashgreenSwap v0.2](https://hash.green/) on Testnet. We warmly invite you to join us and participate in testing the newly implemented features in [HashgreenSwap v0.2](https://hash.green/). Without further ado, let\u2019s jump right in.\\n\\n> **[Click here to visit our page and start testing!](https://hash.green/)**\\n> \\n\\n# HashgreenSwap v0.2 Release\\n\\nThis update introduces two significant features: **Overview** and **Dynamic Fee**. We are excited to bring these additions to [HashgreenSwap](https://hash.green/), alongside various smaller updates and bug fixes that have been implemented based on your invaluable feedback.\\n\\n## Introducing the Analytics Page\u2014Overview\\n\\n![overview.png](./assets/overview.png)\\n\\n[Overview](https://testnet-swap.hash.green/overview) is a brand new segment in [HashgreenSwap v0.2](https://hash.green/) designed to provide a comprehensive overview of trading information and transaction records. With this addition, you can easily access the general trading information in [HashgreenSwap](https://hash.green/), as well as delve into the details of transactions sorted by tokens and pools. Additionally, you can apply filters to explore transactions based on the type of operations performed within the AMM.\\n\\n### Overview\\n\\n![overview_cards_v0.2.png](./assets/overview_cards_v0.2.png)\\n\\n:::tip Did you know...\\nThe total transactions conducted in HashgreenSwap on Testnet have recently exceeded 10,000!\\n:::\\n\\n[At the top section within the Overview page](https://testnet-swap.hash.green/overview), you can find the trading analytics, displaying HashgreenSwap\'s TVL (total value locked), total trading volume, and the overall number of transactions. As you scroll down, you can explore information regarding tokens, pools, and transactions. Alternatively, you can click on the \u201c[Pools](#pools)\u201d or \u201c[Tokens](#tokens)\u201d tab to access a separate page dedicated to pools or tokens, respectively.\\n\\n![transactions.png](./assets/transactions.png)\\n\\nWithin **[Overview](https://testnet-swap.hash.green/overview)**, you will have access to a display of transaction records. You will be able to check each transaction\u2019s transaction type, total value (XCH), token amount, transaction address, and the timestamp. You can also utilize the filter options to selectively display all, swap, add, or remove transactions.\\n\\nEach transaction will have a transaction address. By hovering over the address, you can click on it to access additional information through [Spacescan.io](https://www.spacescan.io/).\\n\\n### Tokens\\n\\n![tokens.png](./assets/tokens.png)\\n\\nThe **[Tokens](https://testnet-swap.hash.green/overview/tokens)** chart presents fundamental information about each token. By hovering over a specific token and clicking on it, you will be redirected to a separate page for extra information.\\n\\n![tokens_txch.png](./assets/tokens_txch.png)\\n\\nTake [TXCH](https://testnet-swap.hash.green/overview/tokens/TXCH) as an example. Once you are redirected, you will be presented with information about the token, including its TVL, total trading volume, total transactions, pool information, and all the relevant transaction records. You can, conveniently, click **Add Liquidity** or **Trade** to be redirected to the respective pages.\\n\\n### Pools\\n\\n![pools.png](./assets/pools.png)\\n\\n**[Pools](https://testnet-swap.hash.green/overview/pools)** will show you the current pools available in HashgreenSwap, including pertinent details such as total volume, TVL, and [APY (annual percentage yield)](https://academy.binance.com/en/articles/apy-vs-apr-what-s-the-difference) of each pair. By hovering over and clicking on a specific pool, it will redirect you to a separate page with further information related to the pool.\\n\\n![token_pair.png](./assets/token_pair.png)\\n\\nEach pool will have its own overview page where details are presented as shown in the image.\\n\\n## Updates on Fee\\n\\n### Dynamic Fee\\n\\nIn order to prevent transactions from failing to go through due to insufficient fees, we developed **Dynamic Fee** to calculate the minimum required fee for your transaction, allowing you to choose enough fee to complete your transaction. Whenever you are [swapping](https://testnet-swap.hash.green/swap), [adding liquidity](https://testnet-swap.hash.green/liquidity), or [removing liquidity](https://testnet-swap.hash.green/liquidity), you can choose between different amounts of network fees that are calculated and the approximated speed will be shown beneath each fee option to give you a better understanding.\\n\\n

\\n \\n

\\n\\nYou can now directly choose the network fee in [HashgreenSwap](https://hash.green/). Powered by dynamic fee aggregation, the system will estimate and recommend up to three fee options with different amounts and speeds.\\n\\n:::tip\\n\\nThe aggregation process calculates the minimum required fee and provides up to three network fee options. By default, the slow option on Testnet is set to 0.005 TXCH to ensure successful transaction completion (However, the default network fee on Mainnet will be 0 XCH). For the other two options, if the calculations have minimal or negligible differences, the system will display a total of two network fee options, including the slow one.\\n\\n:::\\n\\n## Bug Fixes and Minor Adjustments\\n\\nBased on your valuable feedback, we have made several minor adjustments in response to issues identified in the previous release. Some of the fixes implemented based on your feedback include, but are not limited to:\\n\\n- Strengthening and optimizing the user interface.\\n- Ensuring that the wallet remains connected even when the page is refreshed.\\n- Resolving the issue of continuous pop-up windows appearing.\\n- Adding buttons to conveniently copy IDs for LP tokens in HashgreenSwap.\\n\\n## Our Message\\n\\nWe are pleased to have you join us for another update from [HashgreenSwap](https://hash.green/). We would like to invite you again to participate in testing HashgreenSwap on Testnet! Your feedback and support are invaluable to us as we strive to provide the smoothest experience on the Chia blockchain.\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit\xa0[our troubleshooting channel](https://discord.gg/YRksyTEmeq)\xa0for a quick check. If the problem still persists, please contact us and provide additional details through\xa0[the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756)\xa0in Discord.\\n\\n:::\\n\\n> HashgreenSwap: [https://hash.green/](https://hash.green/)
\\n> Follow us on Twitter: [https://twitter.com/HashgreenLabs](https://twitter.com/HashgreenLabs)
\\n> Join our Discord: [https://t.co/XycsnpDJbS](https://t.co/XycsnpDJbS)
\\n> Follow us on LinkedIn: [https://www.linkedin.com/company/hashgreen-labs](https://www.linkedin.com/company/hashgreen-labs)"},{"id":"/HashgreenSwap-v0.1-is-now-live-on-testnet","metadata":{"permalink":"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet","source":"@site/blog/HashgreenSwap-v0.1-is-now-live-on-testnet/index.md","title":"HashgreenSwap v0.1 Is Now Live on Testnet!","description":"HashgreenSwap v0.1 is now live on testnet. Get ready to participate in the testing and earn potential rewards!","date":"2023-04-27T00:00:00.000Z","formattedDate":"April 27, 2023","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap"},{"label":"hoogii","permalink":"/blog/tags/hoogii"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"testnet","permalink":"/blog/tags/testnet"}],"readingTime":3.875,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"HashgreenSwap v0.1 Is Now Live on Testnet!","date":"2023-04-27T00:00:00.000Z","authors":["james"],"tags":["hashgreen","hashgreenswap","hoogii","chia","blockchain","cryptocurrency","mit","startup","amm","testnet"],"description":"HashgreenSwap v0.1 is now live on testnet. Get ready to participate in the testing and earn potential rewards!","image":"./assets/banner-blog.jpg"},"prevItem":{"title":"Join HashgreenSwap on Testnet: v0.2 Release","permalink":"/blog/join-hashgreenswap-on-testnet-v0.2-release"},"nextItem":{"title":"Picturing the Future Development in Chia: A Trusted Gateway System","permalink":"/blog/blog-1-a-trusted-gateway-system"}},"content":"![banner-blog.jpg](./assets/banner-blog.jpg)\\n\\n[HashgreenSwap v0.1](http://testnet-swap.hash.green) is now live on Testnet! This latest version focuses on introducing key features, debuting the main page, and providing numerous testnet events for you to participate in. Come and test HashgreenSwap v0.1 with us and give us your feedback! Let\'s get started together with HashgreenSwap v0.1 on Testnet!\\n\\n> [Visit our page and start testing!](https://testnet-swap.hash.green/)\\n> \\n\\n## Introducing HashgreenSwap v0.1 (Testnet)\\n\\n### Why HashgreenSwap? Don\u2019t Trust, Verify.\\n\\nHashgreenSwap is built around offers, with additional features such as zap, market aggregation, Cypher library, and more. This unique combination creates a trading experience unlike any other. Some of the TLDR sneak peeks include:\\n\\n- **Zap** allows users to add unequal funds to liquidity pool.\\n- All transactions can be cleared within one block.\\n- Money matters. Advanced calculus is employed to ensure fair pricing.\\n- **Cypher** library constructs the foundation of HashgreenSwap.\\n\\nCheck out this [page](https://docs.hash.green/features) and you will learn about the details of the features and mechanics we built for our automated market maker (AMM), HashgreenSwap v0.1, on the Chia blockchain. Remember. Don\u2019t trust, verify. \\n\\n### A Brand New Main Page\\n\\n*\u2014Swap, Earn, and Engage on Chia.*\\n\\n[Discover the all-new main page for HashgreenSwap!](http://testnet-swap.hash.green) We\'re thrilled to introduce our story and provide a hub for the Chia community as an AMM. Take a look and let us know what you think on [Discord](http://discord.gg/KXvqv6cwAk) or [Twitter](https://twitter.com/HashgreenLabs). Your feedback is essential as we strive to create a platform that meets your needs. Join us now and be a part of the HashgreenSwap community!\\n\\n![main-page.png](./assets/main-page.png)\\n\\n### The Integral Swap and Liquidity\\n\\nLocated on the left side of the top bar, **[Swap](http://testnet-swap.hash.green/swap)** and **[Liquidity](https://testnet-swap.hash.green/liquidity)** are the twin spotlights of HashgreenSwap v0.1. Both components are integral to the AMM, with each serving a distinct role. **Swap** allows users to exchange between two tokens on the Chia blockchain whereas **Liquidity** provides you a chance to earn rewards from the trade by staking tokens into a liquidity pool. \\n\\n![swap.png](./assets/swap.png)\\n\\n![liquidity.png](./assets/liquidity.png)\\n\\n## Start Testing HashgreenSwap v0.1\\n\\n### Get Started\\n\\nIn this release, we would like to invite you to help us explore and test the aforementioned functions in HashgreenSwap v0.1 on testnet. Specifically speaking, the procedure for testing is provided but is not necessarily limited to conducting: token swap, liquidity addition, zap, or liquidity removal. Visit the documentation for a comprehensive [guide](https://docs.hash.green/get-started)!\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit [our troubleshooting channel](https://discord.gg/YRksyTEmeq) for a quick check. If the problem still persists, please contact us and provide additional details through [the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756) in Discord.\\n\\n:::\\n\\n### Mission Green Walker\u2014Start Testing with Hoogii\\n\\n![Banner-testnet-tutorial.png](./assets/Banner-testnet-tutorial.png)\\n\\nAre you ready to earn potential rewards by testing HashgreenSwap v0.1? Follow these three simple steps to join the action and be a part of our very first testnet event, Mission Green Walker. Make sure to complete all the steps and stay tuned for even more exciting events to come! Let\'s get started on this journey together!\\n\\n**Step 1: Download Hoogii**\\n\\nEasily connect HashgreenSwap v0.1 with Hoogii following instructions here! Make sure to download [the latest version on Google Chrome Web Store](https://chrome.google.com/webstore/detail/hoogii-wallet/jljjeghmeihjegifdhbghcoihdiegkkl), connect or create a wallet, and switch the network to testnet!\\n\\n**Step 2: Claim TXCH**\\n\\nGet some TXCH from [Chia Faucet](https://testnet10-faucet.chia.net/) or [XCH Dev Faucet](https://xchdev.com/#!faucet.md) to your testnet receive address! Please note that your testnet address should start with \u201ctxch\u2026\u201d but not \u201cxch\u2026\u201d.\\n\\n**Step 3: Start Testing**\\n\\nVoila! There you have it! Now you can start exploring and testing HashgreenSwap v0.1! Below are what you can test:\\n\\n- Token Swap\u2014**Swap TXCH for TFRIES (or in the opposite order).**\\n- Liquidity Addition\u2014**Enter an amount for both TXCH and TFRIES to provide liquidity.**\\n- Zap\u2014**Add unequal funds to the TXCH-TFRIES liquidity pool.**\\n- Liquidity Removal\u2014**Choose how much liquidity you want to remove to withdraw liquidity.**\\n\\n## Our Message\\n\\nThe long-awaited HashgreenSwap v0.1 is now available on Testnet for the entire Chia community to explore and test. Our team has invested a lot of effort into its development, and we\'re hopeful that the mainnet launch is just around the corner. Your feedback is critical, and we would greatly appreciate it as we continue to enhance the platform further.\\n\\n:::info\\n\\nWould you like further assistance with an error message or troubleshooting? Visit [our troubleshooting channel](https://discord.gg/YRksyTEmeq) for a quick check. If the problem still persists, please contact us and provide additional details through [the #support-tickets channel](https://discord.com/channels/920892922969354311/1100322301964189756) in Discord.\\n\\n:::\\n\\nFor any inquiries or to learn more about us, please visit our **[Discord](http://discord.gg/KXvqv6cwAk)** or **[Twitter](https://twitter.com/HashgreenLabs)** pages. Don\'t forget to swap or stake some TXCH and TFRIES to earn potential rewards! We\'ll keep you posted on all future updates and events. Looking forward to seeing you soon!"},{"id":"/blog-1-a-trusted-gateway-system","metadata":{"permalink":"/blog/blog-1-a-trusted-gateway-system","source":"@site/blog/blog-1-a-trusted-gateway-system/index.md","title":"Picturing the Future Development in Chia: A Trusted Gateway System","description":"We introduce what we envision for the future development in Chia, i.e. a lightly trusted gateway system that could improve scalability and responsiveness.","date":"2022-09-21T00:00:00.000Z","formattedDate":"September 21, 2022","tags":[{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"computer system design","permalink":"/blog/tags/computer-system-design"},{"label":"API","permalink":"/blog/tags/api"},{"label":"p2p","permalink":"/blog/tags/p-2-p"}],"readingTime":6.085,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Picturing the Future Development in Chia: A Trusted Gateway System","date":"2022-09-21T00:00:00.000Z","authors":["james"],"tags":["hashgreen","chia","blockchain","cryptocurrency","mit","startup","amm","computer system design","API","p2p"],"description":"We introduce what we envision for the future development in Chia, i.e. a lightly trusted gateway system that could improve scalability and responsiveness.","image":"./assets/Blog_banner_01.png"},"prevItem":{"title":"HashgreenSwap v0.1 Is Now Live on Testnet!","permalink":"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet"},"nextItem":{"title":"Weekly Update #18","permalink":"/blog/weekly-update-18"}},"content":"![banner](./assets/Blog_banner_01.png)\\n\\nHello friends and fellows of Chia, welcome back to another post from [Hashgreen](https://www.hashgreen.net/)!\\n It\'s been a while since we had an update.\\n Please forgive us for not having as many updates recently, as the development of [Hashgreen DEX](https://hash.green/dex) has come to the point where we think current features should suffice for [over-the-counter (OTC)](https://en.wikipedia.org/wiki/Over-the-counter_(finance)) trading purposes.\\n What follows consecutively is the development of the first ever AMM in Chia that is currently underway.\\n We believe the ability to trade at will independently from counter-parties is a critical primitive of on-chain decentralized finance.\\n\\nIn today\'s blog, looking back from the experience of launching [Hashgreen DEX](https://hash.green/dex) to the construction of AMM, we are going to walk you through the landscape of the existing development in [Chia](https://www.chia.net/) and introduce an easier development in which the services could function in a more responsive and scalable manner to meet the needs of both end users and developers. \\n\\n## The current development in Chia ##\\nThere are many existing dApps around the concept of a peer-to-peer trading protocol called [\u201cOffers\u201d](https://www.chia.net/offers/) now.\\n While it is decentralized and secure, the wallet is responsible for, other than just storing your [private keys](https://docs.chia.net/docs/09keys/keys-and-signatures) securely, managing these transactions/trades against peers and tracking their statuses on the blockchain by continuously pulling data from full nodes and verifying them. \\n\\nBelow is a figure showing the general picture of the system design that are commonly seen in Chia:\\n\\n
Figure: The current development in Chia.
\\n
\\n\\n
\\n

\\n\\nThe system, at a brief glance, looks reasonable and works reasonably well: \\n dApps and wallets independently communicate and interact with the blockchain, processing users\' transaction requests.\\n Together they support an array of functionalities, including but are not limited to smart contract ([\\"smart coins\\" in Chia\'s case](https://chialisp.com/docs/getting_started/first_smart_coin/)) management, transaction activity management, and analyses of the blockchain.\\n Smart coin management ensures the states in which users are trying to change are up to date on the blockchain and hence the transactions are valid when submitted; activity management and chain analysis are means to ensure, while complicated operations are behind the scenes, users can rest assured and observe high-level abstraction of their own activities as seen below.\\n\\n
Figure: Transaction activities displayed in the wallet.
\\n
\\n\\n
\\n

\\n\\nYet, current dApps (and other dApps on the way) are replicating an overlapping set of logic with the wallet underneath, performing smart coin management and blockchain analysis parallel to the wallet.\\n In a simpler sense, dApps have to spend resources to set up their infrastructure (i.e. Chia full nodes) to deal with the abundance of activities on-chain.\\n This creates two problems:\\n\\n- Functionalities are very entangled that transactions may go through either the dApp\'s own infrastructure, or through wallet\'s infrastructure.\\n This trilateral relationship is unfavored in computer system design as it ambiguates the responsibilities and roles of dApps and wallets.\\n\\n- Development effort of dApps is high owing to the nature of the complexity of blockchain node deployment.\\n The need for a dedicated infrastructure unavoidably creates an incredible entry barrier for blockchain enthusiasts, whose desire is no more than a backend-less web3 application.\\n We all agree this would hinder the ability for the Chia community to grow rapidly.\\n\\nWe have not even mentioned that current Chia wallets (including official PC wallets and browser extension wallets) have spent so much effort dissecting the whole blockchain simply to locate your transaction in the ocean of activities.\\n This burns away much computational power and energy from your computer, and it bears asking if we can find a better design that hits two birds with one stone—making dApps easier to develop and allowing wallet to offload most of the heavy lifting.\\n\\n## Web3 does not have to be inefficient ##\\ndApps or wallets do not necessarily have to deal with all the nuisances.\\n We can build a supporting system for web3 projects to allow them to read from and write to the blockchain with [APIs (application programming interface)](https://en.wikipedia.org/wiki/API).\\n The idea is that blockchain in itself does not require everyone to trustlessly maintain a replica of the chain, but rather, one should be able to fetch and verify any piece of information from the chain.\\n With that in mind, users on the edge can save their precious computation power and device pattern if they choose so, accessing the web3 world through this supporting system.\\n\\nLet me explain to you why and how exactly does having such a service, or a trusted gateway system to the blockchain, could improve the scalability of the system and thus provide a real-time experience to the end users. \\n\\n## A lightly trusted gateway to the blockchain ##\\n
Figure: What the development would look like if we apply the gateway system.
\\n
\\n\\n
\\n

\\n\\nA trusted gateway system to the blockchain is structurally decentralized in its backend and it provides endpoints users can call to execute their web3 business via APIs.\\n It interacts with the blockchain, as well as the dApps and wallets.\\n This system will focus on solving these problems:\\n\\n- With the help from the gateway system, dApps can deploy ***without*** their own infrastructure and communicate with the wallet directly for information on the blockchain.\\n Some current wallets do not support or intend to support this feature owing to [their own infrastructure implementation](https://github.com/GobyWallet/openapi/blob/f253eb8b235461ebba314dc5cd1a5217f25024be/openapi/config.py#L56-L62), but we envision a future where gateway systems are easily accessible to every developer through wallets. \\n\\n- Wallets can be a lot snappier now since a significant amount of computation has been offloaded to the gateway system, for all the web3 services (as shown in the figure above).\\n The gateway system will also have a high-performance backend that is responsible for cashing, access control, and bi-directional communication via websocket.\\n\\nThe gateway system to the blockchain could be beneficial to the users and the developers for it could enhance the scalability and responsiveness of the system.\\n It will achieve a greater level of convenience if the demand and usage of dApps in Chia grow higher.\\n But the challenge for the system would be to earn trust from the users and other developers in the defi world.\\n\\n## Even more possibilities? ##\\nThe aforementioned gateway system is just an idea that we envision and below are some more of the functionalities we can think of that also serve well:\\n\\n- An activity-based analysis of the whole blockchain can be easily carried out by the gateway system.\\n For example, standard Chia farming and transfer events, CAT minting/melting/transfer events, NFT minting/transfer/royalty collection events, etc.\\n This activity feed can be collected by wallet users or blockchain explorers, avoiding showing end users coin sets which are hard to parse for human eyes.\\n\\n- If the users provide an observable wallet public key, the gateway system can even effectively provide a non-SPV wallet to browser extension users.\\n That means, you will have a seamless experience transitioning from Chia official wallets to extension wallets!\\n\\n## Summary ##\\nWe talked about the current development in Chia and painted a picture of an easier development in which responsiveness and scalability are achieved via a lightly trusted gateway system.\\n We believe that such a gateway system could be favorable to the users and developers, and maybe you have a better idea to foster the ecosystem!"},{"id":"/weekly-update-18","metadata":{"permalink":"/blog/weekly-update-18","source":"@site/blog/weekly-update-18/index.md","title":"Weekly Update #18","description":"Hashgreen updates on: Recapping the CAT standard upgrade and Hashgreen\'s actions.","date":"2022-08-04T00:00:00.000Z","formattedDate":"August 4, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cat","permalink":"/blog/tags/cat"}],"readingTime":2.88,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #18","date":"2022-08-04T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","cryptocurrency","mit","startup","dex","cat"],"description":"Hashgreen updates on: Recapping the CAT standard upgrade and Hashgreen\'s actions.","image":"./assets/banner.png"},"prevItem":{"title":"Picturing the Future Development in Chia: A Trusted Gateway System","permalink":"/blog/blog-1-a-trusted-gateway-system"},"nextItem":{"title":"Weekly Update #17","permalink":"/blog/weekly-update-17"}},"content":"![banner](./assets/banner.png)\\n\\nHello Chia holders and Hashgreen\'s friends, welcome back to another Hashgreen\'s weekly update.\\n Last week, there was a bit of turmoil after [Chia](https://www.chia.net) posted an announcement in their [Twitter](https://twitter.com/chia_project/status/1551615648404422656?s=20&t=BPFATPgoK1yx8eETSe_VVQ), stating that the [Chia Asset Token (CAT)](https://chialisp.com/docs/puzzles/cats/) standard will be upgraded and CAT1 will be officially end-of-life (EOL) and replaced with CAT2. \\n \\nIn weekly update #18, we\'re going to tell you about this incident, explaining what were the actions that we took in response to CAT2 standard and how [Hashgreen DEX](https://hash.green/)\'s approach enforces trading security.\\n\\n### Timeline of Chia\'s actions ##\\n\\n>\\nJul 26, 2022 upgrading the CAT standard

\\nJul 26, 2022 around 10am PDT (after block height 2,311,760) CAT1 EOL

\\nJul 27, 2022 v1.5.0 live

\\nJul 28, 2022 blog post updated

\\nJul 30, 2022 CAT1 vulnerability explained\\n\\n### What happened? ###\\n\\nWithin a few days, Chia continued to release a series of updates and announcements, finishing upgrading the CAT standard, bringing v1.5.0 live, and explaining what exactly was the vulnerability of CAT1 standard coin after the upgrade was finalized. \\n Details are included in their [blog post](https://t.co/yEvX2e9RBC).\\n\\nLuckily, this \\"Cat Bleed\\" was never exploited, confirmed by Chia\'s team.\\n The concern was raised by [Trail of Bits](https://www.trailofbits.com/), a security auditor which helps Chia to audit, addressing \\"a potential class of vulnerabilities that led the team to uncover a security vulnerability with CAT1\\". \\n To summarize it, the issue was a potential vulnerability that could be exploited by anyone to print as many fake CATs as they want.\\n Chia later released [a technical article](https://t.co/jbCSJKwpCO) explaining the vulnerability they uncovered for CAT1.\\n\\nChia also suggested actions for users and CAT issuers to follow in order to move forward from the EOL to CAT2. \\n Users are advised to download 1.5.0 client, cancel their offers, check their CAT1 balance, and wait for the airdrop of CAT2 from issuers. \\n CAT issuers are provided with an official tool for the re-issuance.\\n\\n### Actions for Hashgreen ### \\n\\n>\\nJul 26, 2022 halting all trading activities

\\nJul 27, 2022 reminding users to keep up-to-date

\\nJul 27, 2022 Chia\u2019s official wallet and API trading back in our DEX

\\nJul 28, 2022 trade resumed as issuers re-issuing their tokens \\n\\nHashgreen were able to react after the news came out on July 26th. \\n We quickly took actions, incorporating frontend, backend, and operations to adapt to the change. \\n We halted all CAT trading activities and offer uploading from our API and [tweeted the information](https://twitter.com/HashgreenLabs/status/1552110066677202944?s=20&t=jyVNiZ91VcNkR3lIv3tB8w) to the public, reminding users and token issuers what they should do and be aware of about the upgrade. \\n Before the release of [Chia Blockchain 1.5.0](https://github.com/Chia-Network/chia-blockchain/releases/tag/1.5.0), we had also hidden all the CAT1 markets to prepare for CAT2\'s data migration from [TAIL Database](https://www.taildatabase.com/).\\n\\nTo prevent any exploit from happening, Chia suggested users to cancel offers that have been uploaded or shared on the internet, especially those providing XCH for CAT1s.\\n With our approach of [aggregating offers](https://docs.hash.green/blog/2022/01/29/introducing-hashgreen-dex#:~:text=a%20download%2Dfree,guaranteed%20by%20chialisp.), you don\'t have to cancel offers that you uploaded to our DEX since, essentially, no one will be able to take down any of it once all the trading activities are halted. \\n\\nOur team were able to upgrade Hashgreen DEX and resume all the trading activities hereafter as the CAT issuers continued re-issuing their coins.\\n Once again, if you are a trader, we recommend you to update to v1.5.0 as soon as possible and please beware that CAT1 is no longer acknowledged by Chia\'s wallet. \\n\\n:::info\\nPlease beware that CAT2 has a different asset ID than its CAT1 version.\\n:::"},{"id":"/weekly-update-17","metadata":{"permalink":"/blog/weekly-update-17","source":"@site/blog/weekly-update-17/index.md","title":"Weekly Update #17","description":"Hashgreen updates on: tutorial pop-up page, my orders pagination, adjusting landing page on the mobile, and update for amm.","date":"2022-07-25T00:00:00.000Z","formattedDate":"July 25, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"tutorial","permalink":"/blog/tags/tutorial"},{"label":"rwd","permalink":"/blog/tags/rwd"}],"readingTime":2.51,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #17","date":"2022-07-25T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","cryptocurrency","mit","startup","dex","amm","tutorial","rwd"],"description":"Hashgreen updates on: tutorial pop-up page, my orders pagination, adjusting landing page on the mobile, and update for amm.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #18","permalink":"/blog/weekly-update-18"},"nextItem":{"title":"Weekly Update #16","permalink":"/blog/weekly-update-16"}},"content":"![banner](./assets/banner.png)\\n\\n\ud83c\udf31 Hello Chia holders and Hashgreen readers, welcome back to another weekly update. \\n In the [previous update](https://docs.hash.green/blog/weekly-update-16), we explained two fundamental ideas in decentralized finance (DeFi), that is, [order books](https://docs.hash.green/blog/weekly-update-16#what-is-an-order-book) and [swaps](https://docs.hash.green/blog/weekly-update-16#what-is-a-swap). \\n Some of you may already know these concepts, but we believe a succinct explanation is needed to let everybody know what\'s going on and what product they are using.\\n\\nThis week, we have a few updates that we would like to tell you about. \\n:::note tl;dr\\ntutorial page, my orders pagination, adjustment of landing page on the mobile, and the update for amm.\\n:::\\n\\n## What\'s Been Done ##\\n\x3c!--Tutorial--\x3e\\n- The tutorial for [Hashgreen DEX](https://hash.green/dex) is out now!\\n Considering the complexity and the novelty of DEX, we release a tutorial segment as a guidance for users who are new to our page or not familiar with the landscape of DeFi. \\n\\n
Figure: Tutorial will pop out for first time users.
\\n
\\n\\n
\\n

\\n\\n- We will guide you through the main features of Hashgreen DEX, in the hope that you will quickly understand how to trade in Hashgreen DEX. \\n (You can also visit our [Docs](https://docs.hash.green/) for more information. :sparkling_heart:)\\n\\n
Figure: Follow the steps to learn key features and how to trade.
\\n
\\n\\n
\\n\\n
Figure: You can always find the tutorial here in the navigation bar.
\\n
\\n\\n
\\n

\\n\\n\x3c!--my orders pagination--\x3e\\n- We\'ve added pagination in `My Orders`. \\n A page can display up to 8 transactions, and below the panel lay the pagination buttons where you can click to see your transactions collated and presented in different pages.\\n\\n
Figure: Click different pages to view your orders.
\\n
\\n\\n
\\n

\\n\\n\x3c!--rwd for ldp--\x3e\\n- Our team has made a few adjustments to the appearance of our landing page on different mobile devices. \\n\\n## What\'s Rolling ##\\n- We at [Hashgreen](https://www.hashgreen.net/) have had some gradual progress along the way building the AMM. \\n The development is now in full swing. \\n Our team has almost finished the smart contract\'s high-level design and only micro adjustments are needed for future implementation. \\n We want to secure a seamless end-to-end trading experience in which our dApp interacts smoothly with the connected wallet.\\n\\n- Concrete plans of tokenomics and functionalities will be out around early September, and the same goes for the whitepaper. \\n We will release an alpha version, \\"Alpha Testing\\", on the testnet and start testing it around early November. \\n Alpha Testing is opened to community members on Testnet10.\\n You are absolutely welcomed to join our Alpha Testing and if you do so, you can accrue alpha tester status (possibly rewards!).\\n Once we make sure everything is well prepared and settled after Alpha Testing, we will formally launch the service, set to release in 2023, on Mainnet. \\n By the time \\"Mainnet Launch\\" gets going, it will be available to everyone, accompanied by the releasing of Hashgreen token. \\n\\n![timeline](./assets/timeline.png)"},{"id":"/weekly-update-16","metadata":{"permalink":"/blog/weekly-update-16","source":"@site/blog/weekly-update-16/index.md","title":"Weekly Update #16","description":"Hashgreen updates on: trading and swapping explained","date":"2022-07-14T00:00:00.000Z","formattedDate":"July 14, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"order book","permalink":"/blog/tags/order-book"},{"label":"swap","permalink":"/blog/tags/swap"}],"readingTime":3.21,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #16","date":"2022-07-14T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","order book","swap"],"description":"Hashgreen updates on: trading and swapping explained","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #17","permalink":"/blog/weekly-update-17"},"nextItem":{"title":"Weekly Update #15","permalink":"/blog/weekly-update-15"}},"content":"![banner](./assets/banner.png)\\n\\nHello Hashgreen readers, welcome back to another week of Weekly Update! \\n\\nLast week, we released an update targeting mobile device users and since then we\'ve received some genuine feedback from [reddit](https://www.reddit.com/r/chia/comments/vsjeyk/hashgreen_weekly_update_15_07062022_a_more/?utm_source=share&utm_medium=web2x&context=3). \\n Thank you again for always willing to give us constructive advice, and we will continue working on providing a better experience to the users of [Hashgreen DEX](https://hash.green/dex).\\n At the same time, we will keep developing and building more services for the community on [Chia Blockchain](https://www.chia.net/). \\n\\nThis week we would like to introduce two essential components in [DeFi](https://en.wikipedia.org/wiki/Decentralized_finance), that is, order books and swaps, and share with you the difference and the pros and cons for each design.\\n\\n## What is an Order Book?\\n:::note definition\\nAn order book refers to an electronic list of buy and sell orders for an asset organized by the price. \\n:::\\n\\n- An order book is widely used in traditional trading markets such as the stock market. \\n Generally, it shows a smooth and aggregated view of a specific financial instrument. \\n It comprises two sides, bidding and asking, dedicated to buyers and sellers. \\n\\n- In cryptocurrency, trading platforms such as the centralized exchange (CEX) or the decentralized exchange (DEX) often incorporate order books to display a variety of crypto assets for users to trade. \\n You probably have heard of [Binance](https://www.binance.com/) or [Coinbase Pro](https://pro.coinbase.com/). \\n They are the top CEXs that people visit and conduct trades. \\n\\n## Understanding Order Books\\n- Order books contain these main parts: bid and ask, price and amount, and order history. \\n\\n
Figure: Order book in Hashgreen DEX.
\\n
\\n\\n
\\n\\n**Bid and Ask**\\n- `bid` is an order in which buyers bid for a certain amount of shares at a particular price.\\n- `ask` is an order in which sellers ask for a specific price for their shares. \\n\\n**Price and Amount**\\n- An order book records two sides of the orders:\\n - `bid` side contains information such as all the bids, the amount they wish to purchase, and the price they are willing to pay.\\n - `ask` side resembles the bid side.\\n\\n- At the top of the order book is where the highest `bid` and the lowest `ask` prices are shown. \\n\\n**Order History**\\n- Order History records all the transactions that have occurred in the past, including both the `bid` and the `ask` sides.\\n\\n
Figure: Hashgreen DEX incorporates trade history into the page.
\\n
\\n\\n
\\n\\n## What is a Swap? \\n- When you are trading on DEX, you are carrying out trades in order books. \\n Transactions are only fulfilled by matching ask or bid orders that other people uploaded. \\n \\"Swap\\", in cryptocurrency, refers to exchanging the cryptocurrency you have for the equivalent value of another crypto. \\n\\n- Swaps offer greater flexibility in designing and constructing the transaction process and more essentially the agreement between two parties to exchange assets for a set period. \\n Examples of swaps in cryptocurrency that the majority of people would most likely use are [Uniswap](https://app.uniswap.org/#/swap) on Ethereum and [PancakeSwap](https://pancakeswap.finance/) on BNB Chain.\\n\\n## Why is Swapping More Immediate?\\n- Swapping provides an even better experience for great flexibility, high transaction efficiency, fair price, and efficient price discovery. \\n When you are buying something that must accept DAI, but you only have ETH, then it\'s a good time to swap.\\n\\n- Conceptually, trading and swapping are similar. \\n However, trading with order books usually requires deeper understanding of the design and functionalities of trading and order books, whereas swapping can be as simple as possible for users to execute.\\n\\n## Trading vs. Swapping\\n| | trading on DEX | swapping on AMM |\\n|----------------------|:--------------:|:---------------:|\\n| average waiting time | slower | quicker |\\n| transaction speed | tied | tied |\\n| price | inferior | fair |\\n| price discovery | less efficient | more efficient |"},{"id":"/weekly-update-15","metadata":{"permalink":"/blog/weekly-update-15","source":"@site/blog/weekly-update-15/index.md","title":"Weekly Update #15","description":"Hashgreen updates on: a more satisfying experience using mobiles to visit Hashgreen DEX.","date":"2022-07-05T00:00:00.000Z","formattedDate":"July 5, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"rwd","permalink":"/blog/tags/rwd"},{"label":"i18n","permalink":"/blog/tags/i-18-n"}],"readingTime":2.26,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #15","date":"2022-07-05T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","rwd","i18n"],"description":"Hashgreen updates on: a more satisfying experience using mobiles to visit Hashgreen DEX.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #16","permalink":"/blog/weekly-update-16"},"nextItem":{"title":"Weekly Update #14","permalink":"/blog/weekly-update-14"}},"content":"![banner](./assets/banner.png)\\n\\n\ud83c\udf31 Welcome back to another Weekly Update from Hashgreen, Chia\'s holders and friends! In the previous update, we talked about the updates and guidelines for the translation project of Hashgreen DEX (you are always welcome to contact us via [Discord](https://discord.com/invite/KXvqv6cwAk) or [Twitter](https://twitter.com/HashgreenLabs) to suggest a language or offer to help with the translation), and this week we have brought you an important update especially for mobile device users.\\n\\n## What\'s Been Done ##\\n- Thanks to the help from our translators, German has been updated to our DEX!\\n\\n- Users can now enjoy a better and smoother experience using mobile devices to visit [Hashgreen DEX](https://hash.green/)! What are the differences that you see? :face_with_monocle: Tell us your [feedback](https://discord.com/invite/KXvqv6cwAk)!\\n\\n
Figure: Try it out for yourself on the phone!
\\n
\\n\\n
\\n\\n- Our team has updated the interface of our DEX to make it render well with mobile devices, granting users an optimal experience no matter which mobile devices you are on. \\n\\n:::tip **Which devices do you use the most to visit our DEX? \ud83d\udcbb or \ud83d\udcf1?**\\nWhen would you use your phone to check our DEX instead of your computer?\\n:::\\n\\n- We did observe that there are a number of users who would visit our DEX on their phones from time to time and we believed that there indeed is some latent demand or at least some inherent tendency for the users to visit our website while they are checking their phones. \\n That\'s why we released this update, adjusting the layout and the aesthetic of our website, for users who opt for mobile devices. \\n\\n- One of the reasons we did not make this feature a high priority in our development schedule is due to the fact that users cannot trade with their phones. \\n There might be services that can solve this problem in the future, but for now it\'s not possible. \\n\\n- We [asked the community](https://twitter.com/HashgreenLabs/status/1543988394518548482?s=20&t=300xhsec8WSOyVD4D5ba7A) about what devices do you use the most when you visit our DEX, and the answer pretty much echoes with our observation. \\n According to our data in Google Analytics, around 80 percent of the users visit our DEX using their desktops, and 20 percent of them use mobile devices. \\n Isn\'t this interesting? \\n Although desktop users form the predominant part of our users, there is still demand and feedback from mobile device users. \\n\\n- If you have any questions regarding the update or you would like to offer help with the translation, please visit our [Discord](https://discord.com/invite/KXvqv6cwAk) or [Twitter](https://twitter.com/HashgreenLabs) and reach out to our members!\\n\\n## What\'s Rolling ##\\n- Our team is working on releasing an interactive introduction for users who visit our website for the first time."},{"id":"/weekly-update-14","metadata":{"permalink":"/blog/weekly-update-14","source":"@site/blog/weekly-update-14/index.md","title":"Weekly Update #14","description":"Hashgreen updates on: i18n project for DEX.","date":"2022-06-28T00:00:00.000Z","formattedDate":"June 28, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"i18n","permalink":"/blog/tags/i-18-n"}],"readingTime":1.855,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #14","date":"2022-06-028","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","i18n"],"description":"Hashgreen updates on: i18n project for DEX.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #15","permalink":"/blog/weekly-update-15"},"nextItem":{"title":"Weekly Update #13","permalink":"/blog/weekly-update-13"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\nWelcome back to another weekly update for [Hashgreen](https://www.hashgreen.net/)! It\'s been a great week continuously developing our product, and this week we are going to give you an update on the translation project for [Hashgreen DEX](https://hash.green/) and also some random updates of Hashgreen! \\n\\n- Hashgreen members were having a monthly meet last Friday! Monthly meets are one of the great ways to keep everyone connected, especially when the members are all working remotely. \\n\\n- We are going to have an office space in Taipei! \\n\\n### Updates on the i18n project for Hashgreen DEX ###\\n- Last week, we began the translation project for Hashgreen DEX using [Crowdin](https://crowdin.com/), a cloud-based localization management platform that enables both collaborative translation and management, and we\'re lucky to have multiple volunteer translators to help us with our product. \\n So far, we\'ve had 11 project members assisting us with the project and in total 9 languages listed to be translated. \\n\\n- Again, we are constantly looking for volunteer translators or proofreaders to help us, so if you are interested in it, please don\'t hesitate to contact us via contact@hashgreen.net or visit our [Discord](https://discord.com/invite/KXvqv6cwAk) for more information.\\n\\n- For translators and proofreaders, we prepared a tutorial and some guidelines on how to complete the translation and what they should pay attention to when translating. \\n Below are general explanations to the process of translation:\\n 1. **Achieving \\"conceptual equivalence\\" in each of the source and target languages.** \\n The translation should convey the same meaning as the source language, and it should also remain natural and acceptable in the target language.\\n 2. **Limited length of source string due to the design of the interface.** \\n Try not to let the translation surpass the original text length. \\n 3. **Completion rate of translation above 95% is the parameter.** \\n The translator should complete at least 95% of the translation, otherwise the translation will not be updated to our DEX. We will update languages that meet the parameter on a periodic basis.\\n\\n- Your assistance is always one of the most precious things that we deeply appreciate, and in order to express our gratitude, there might be some random surprises given to those who help us with the translation project. \ud83d\ude1c"},{"id":"/weekly-update-13","metadata":{"permalink":"/blog/weekly-update-13","source":"@site/blog/weekly-update-13/index.md","title":"Weekly Update #13","description":"Hashgreen updates on: live market trading chart and language switch option.","date":"2022-06-20T00:00:00.000Z","formattedDate":"June 20, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":2.555,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #13","date":"2022-06-020","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Hashgreen updates on: live market trading chart and language switch option.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #14","permalink":"/blog/weekly-update-14"},"nextItem":{"title":"Weekly Update #12","permalink":"/blog/weekly-update-12"}},"content":"![banner](./assets/banner.png)\\n\\nGood morning Chia \ud83c\udf31, Chia\'s holders and Hashgreen\'s readers! We are back again for another weekly update. We are excited to share with you some updates for [Hashgreen DEX](https://hash.green/), including the live market trading chart and the language support that comes back. Without further ado, let\'s get started!\\n\\n## What\'s Been Done ##\\n\\n- Live market trading chart is now officially released in [Hashgreen DEX](https://hash.green/)!\\n Open your trading page and try it out for yourself! Over the past weeks, our team has dedicated to the work of visualization and the facelift of the user interface according to this new feature update. \\n\\n
Figure:\u2728Brand new interface with the live market chart.\u2728
\\n
\\n\\n
\\n\\n:::note \\nWhen there\'s a huge amount of data, it usually takes longer time to load. \ud83d\ude2c\\n:::\\n\\n- With the live market trading chart, you are able to click through different market pairs to view the real time changes and the history of the difference in price laid out for each market pair. \\n You can decide on your own to select the range of time or the price scale at different intervals, and the chart will change its display correspondently to your adjustments. \\n\\n
Figure: Click here to change the frequency of data aggregation.
\\n
\\n\\n
\\n\\n
Figure: X-axis marks the time. Select different date ranges here.
\\n
\\n\\n
\\n\\n
Figure: Y-axis marks the price. You can choose between different price scales here.
\\n
\\n\\n
\\n

\\n\\n- The chart will also track your mouse movements and show you the price at a certain point of time when you hover your mouse within the market chart.\\n\\n
Figure: The chart will display the price according to where you lay your mouse in the chart.
\\n
\\n\\n
\\n

\\n\\n- Language switch option is now back at Hashgreen DEX! \\n It\'s now located at the right of the navigation bar and changed into a `\ud83c\udf10` button in which a drop down menu will come up and show the languages we support. Currently we have the support for English, Spanish (Latin America), Traditional Chinese, and Simplified Chinese. We will continue to add more languages in the future. \\n\\n
Figure: Click the button to choose the language.
\\n
\\n\\n
\\n

\\n\\n## What\'s Rolling ##\\n- Although we\'ve already had four languages supported now at Hashgreen DEX, we still would like to support as many languages as possible. \\n We posted an announcement at our [Discord](https://discord.com/invite/KXvqv6cwAk) two weeks ago, asking for volunteer translators to help us. \\n Up to now, we\'ve had a few volunteers who are willing to help!\\n And we still need more people to help!\\n We are now looking for volunteer translators and proofreaders.\\n If you\'re interested and would like to help, please visit our [Discord](https://discord.com/invite/KXvqv6cwAk)!\\n\\nWe are always grateful for the help and support you provided to us, and thank you again for the love and support!"},{"id":"/weekly-update-12","metadata":{"permalink":"/blog/weekly-update-12","source":"@site/blog/weekly-update-12/index.md","title":"Weekly Update #12","description":"Hashgreen updates on: recap of AMA at Chia in Chia and committed and uncommitted offers.","date":"2022-06-14T00:00:00.000Z","formattedDate":"June 14, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"nft","permalink":"/blog/tags/nft"}],"readingTime":3.97,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #12","date":"2022-06-014","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","nft"],"description":"Hashgreen updates on: recap of AMA at Chia in Chia and committed and uncommitted offers.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #13","permalink":"/blog/weekly-update-13"},"nextItem":{"title":"Weekly Update #11","permalink":"/blog/weekly-update-11"}},"content":"![banner](./assets/banner.png)\\n\\nWelcome back to another Hashgreen\'s weekly update! Previously on [Weekly Update #11](https://docs.hash.green/blog/weekly-update-11) we talked about the design features that began to take shape for the AMM, hankering for the best outcome to our users and to the ecosystem. We also announced a few updates and a call for volunteer translators. If you are willing to help with the translation, please visit our [Discord](https://discord.com/invite/KXvqv6cwAk).\\n\\nThis week we will be taking you through two topics: the AMA we attended earlier this June and our thought and expectation for offer2 according to the feedback from the community.\\n\\n## Hashgreen at Chia in China\'s AMA ##\\n\\n### What Chia is trying to solve with its NFT standards ###\\n\\nIn the AMA held by Chia in China, we introduced our products and talked about offer features and Chia\'s NFT standards. Below are three factors we mentioned about Chia\'s NFT during the AMA, namely what Chia is trying to solve and realize with its NFT standards.\\n\\n- **Autonomous offer trading: to trade without authorization from a third-party platform.** \\n \\n Chia does not need you to authorize a third-party platform to operate for you. \\n This could fundamentally prevent users from getting scammed. \\n\\n- **Decentralized Identifier (DID): to verify the authenticity and to prove the ownership.**\\n \\n Has it ever happened to you when you bought an NFT and later discovered that it was an impersonation scam? \\n This is what Chia wants to solve with its [NFT1 standard](https://www.chia.net/2022/05/11/our-vision-for-chia-nfts.en.html). \\n DID is like a digital identification that confirms the authenticity. \\n With such method, creators or project owners can have their NFTs connected with their DIDs, proving the ownership with the digital identity.\\n\\n- **Royalty: to pay profit-sharing to the author of an NFT.** \\n \\n How many percent of royalty payment should be given to the author of an NFT is what Chia\'s figuring out and this is going to be one of the core ideas for NFT1.\\n\\nChia\'s NFT is definitely a worthy path to take and a pull factor that attracts developers, investors, and users to come, especially when there\'s a variety of paths such as DEX, NFT, and DeFi that people have embarked on to develop or build Chia\'s infrastructure. \\n\\nRegardless of which path you are going to take or have taken, we, Hashgreen, are always pouring ourselves into helping these projects, including NFTs. Most importantly, providing a steady and strong base for Chia\'s community is what we expect and choose to do to allow all tokens in Chia to be able to trade. \\n\\n## Committed and Uncommitted Offers ##\\n\\n### What we think offer2 can hold for us ###\\n[Offer files](https://www.chia.net/offers/) (\u201doffers\u201d, \u201coffer1 standard\u201d) have been one of the biggest drivers for the community activities in Chia, as it provides a p2p way for people to trade trustlessly and securely. As one of the first adopters of offer1, we love it so much that we start to think what we ultimately want it to evolve into based on the feedback of many DEX users. We heard these feedback:\\n\\n- **Why does my attempt to fulfill the offer fail?** \\n\\n Ok, so this relates to how current offers are structured: they are not *commitments* on the chain to indicate token swap intentions, but merely a *memorandum of understanding*. The offer makers can withdraw their offers any second by spending the recorded coins in the offer, while you, the offer taker, have to check if the coin still exists beforehand. \\n \\n Can we make this process better? Yes! In fact, the offers should be on chain with two possible exit paths: either via settled swaps or clawback after some timeout. You can be assured that the offer is still 100% valid as long as you peek into the coins and you know for how much longer they will continue to remain valid. \\n \\n- **Is there a limit price I can put? Partial fill?**\\n \\n *No limit price. No partial fills. Ouch.*\\n \\n This is most of our experience with the current DEX on Chia, and we understand it so much more. We would call it lack of feature rather than a bug for offer1, as the logic for limit price and partial fills are very custom to *fungible tokens*. The logic for offer1 is perfect, for example, for NFTs as they need to be exchanged in whole. We think a good offer2 design should leave rooms to house some custom logic, including things like \u201callowing transactions to go through as long as prices are above this price\u201d and \u201cself re-instantiation if certain conditions are met\u201d.\\n \\nFrom an AMM building perspective, we think having an offer2 that satisfies the above criteria would allow an easier exchange of funds, thus increasing liquidity and capital efficiency in the Chia Blockchain. So, rest assured folks, while Hashgreen Labs continues to build on Chia!"},{"id":"/weekly-update-11","metadata":{"permalink":"/blog/weekly-update-11","source":"@site/blog/weekly-update-11/index.md","title":"Weekly Update #11","description":"Hashgreen updates on: AMM\'s design features, i18n for DEX, and scam alert","date":"2022-06-07T00:00:00.000Z","formattedDate":"June 7, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"offer","permalink":"/blog/tags/offer"}],"readingTime":2.415,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #11","date":"2022-06-07T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","offer"],"description":"Hashgreen updates on: AMM\'s design features, i18n for DEX, and scam alert","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #12","permalink":"/blog/weekly-update-12"},"nextItem":{"title":"Weekly Update #10","permalink":"/blog/weekly-update-10"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n\\n### AMM\'s Design Features Explained ###\\n\\nHi Chia holders! We at Hashgreen have some updates on the long awaited AMM! Over the past weeks, while we have implemented basic building blocks for the smart schemes, more importantly we are composing these blocks to ensure users have great experience trading and participating in our ecosystem.\\n\\n- **A sustainable token and distribution scheme for the Hashgreen ecosystem:** \\n \\n We want to bake our tokenomics directly into our AMM by highly incentivizing the first batch of supporters for their rapid adoption. On the other hand, we are considering allowing not only liquidity providers to earn (liquidity mining), but also protocol owners \u2014 each and every one who owns the Hashgreen token \u2014 to earn. \\n \\n- **Fair pricing of token pairs:** \\n \\n We all know there are huge Miner Extracted Values (MEVs) in the Ethereum ecosystem, and especially when it comes to trading, miners can easily manipulate the orders of contract interaction in their favor. \\n Chia Blockchain does not have this problem, and we enforce a rule of single price per block to prevent market manipulation. Everyone who interacts with the AMM gets the same price and does not get front-run. \\n \\n- **Name your slippage tolerance and commitment period:**\\n \\n When you put orders in to buy from/sell to the AMM, on top of the assured fair prices, you can additionally specify a maximum slippage tolerance you are willing to accept, and until when the order is valid.\\n These fully adjustable parameters will make interactions with AMM a very familiar experience compared to existing ones you have used before.\\n\\nThere are many more design features we are currently working out! If you have questions, feel free to shoot message at our [Twitter](https://twitter.com/HashgreenLabs) or [Discord](https://discord.com/invite/KXvqv6cwAk)!\\n\\n## What\'s Rolling ##\\n\\n- Language switch option is about to be released again in the near future! \\n As we would like to support as many languages as possible, we are looking for volunteer translators! \\n If you are interested in providing help, please head to our [Discord server](https://discord.com/invite/KXvqv6cwAk) and write a message in #translators or DM `@HG | Daisy` and `@HG | James` to let us know. \\n\\n- Lately we\'ve noticed that there\'s some impersonation scams in Chia\'s community and people have been affected by it. \\n Thanks to the community\'s effort and your report, we were able to identify it and withdrew it from circulation in our DEX. \\n Please be extra careful when you make any transaction, and make sure you have a full understanding of the background of the tokens you\'re going to trade. \\n The effort in identifying and terminating scams is also attributed to the token listing mechanism in our DEX, where the data is reviewed after being imported from TAIL database API. \\n We are currently working on adding warning messages in the DEX to help you and please keep careful watch for potential scams whenever you trade."},{"id":"/weekly-update-10","metadata":{"permalink":"/blog/weekly-update-10","source":"@site/blog/weekly-update-10/index.md","title":"Weekly Update #10","description":"Hashgreen updates on: User ID and user feedback.","date":"2022-05-31T00:00:00.000Z","formattedDate":"May 31, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"offer","permalink":"/blog/tags/offer"}],"readingTime":4.04,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #10","date":"2022-05-31T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","offer"],"description":"Hashgreen updates on: User ID and user feedback.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #11","permalink":"/blog/weekly-update-11"},"nextItem":{"title":"Weekly Update #9","permalink":"/blog/weekly-update-9"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\nOver the past week, we\'ve had [Goby](https://www.goby.app/) successfully integrated into [Hashgreen DEX](http://hash.green/) and we\'ve also shared an interesting discovery made possible via a tool we developed that analyzes and reifies blockchain activities on Chia. \\nIf you\'d like to see more of the cool graph analysis, please visit our tweet [here](https://twitter.com/HashgreenLabs/status/1529884518345322502?s=20&t=-dqCN0qI5_KyatFeZeRe5w) and join the discussion.\\n\\n### Transaction Fee and Chia\'s Coin Set Model ###\\n- We received some feedback from you related to the mechanism of transaction fee and the [coin set model](https://docs.chia.net/docs/04coin-set-model/intro) that Chia uses. \\nChia released in [Chia Blockchain 1.3.4](https://github.com/Chia-Network/chia-blockchain/blob/main/CHANGELOG.md#:~:text=When%20making%20an%20offer%2C%20makers%20can%20now%20create%20an%20offer%20including%20a%20fee%20to%20help%20get%20the%20transaction%20into%20the%20mempool%20when%20an%20offer%20is%20accepted) the function of allowing makers to create an offer with a fee in order to help get the transaction onto the blockchain. \\nAccording to the release, now when you want to make an offer in Hashgreen DEX, you can always add a transaction fee via Chia wallet or Goby wallet to ensure the priority of your offer in the queue. (See [Best Chia Projects Bootstrapped on Hashgreen DEX](https://docs.hash.green/blog/airdrop-on-hashgreen-dex#what-is-the-dust-storm) for more.) \\n\\n- Sometimes problems such as `amount higher than spendable balance` would occur when you try to make an offer. This is likely due to the characteristics of Chia\'s coin set model:\\n\\n> According to [an article](https://www.chia.net/2021/07/13/a-vision-for-defi-in-chia.en.html) written by [Bram Cohen](https://twitter.com/bramcohen), he explains in the second paragraph:\\n- *The only persistent data is the current set of unspent coins, which have sizes and rules about how they can be spent.* \\n- *When a coin is spent it can make new coins using its value but the original coin is gone forever.*\\n\\n- Take the following scenario as an example: You have 20 USDS in your wallet and you\'d like to create an offer to buy 1 XCH for 10 USDS. \\n\\n - Due to Chia\'s coin set model, your 10 USDS may consist of different coins in one package. \\n Possibilities of the actual allocation could be: (A) one coin sized 20 USDS, (B) two coins sized 18 USDS and 2 USDS, or (C) whichever amount of coins that sums up as 20 USDS, depending on how the original transaction looks like or how many coins that are originally in your wallet. \\n As you make the transaction, it sends the entire amount (or the highest amount of coin that you have) to the blockchain, then the change will be sent back to you.\\n\\n - In such a case where you have one single coin sized 20 USDS, your coin will be sent to the blockchain, destroyed, and split into two coins of 10 USDS, one of which will be spent, while the other will be given back to you. \\n Before the transaction is sent to the full nodes (mempool, actually) and waiting to be included in the blockchain, you may not be able to make another offer since technically you don\'t have any coins available to be spent in your wallet. \\n\\n - Therefore, whenever you try to create another offer, you won\'t be able to do so, and that alert message `amount higher than spendable balance` will show up to remind you.\\n\\n### User ID ###\\n- If you are transitioning from one device browser to another, you can use `user ID` to migrate your order and trade records. \\nPreviously on [Weekly Update #6](https://docs.hash.green/blog/weekly-update-6), we mentioned the function of user ID and how to use it. We would like to elaborate on this function, explaining more about the use and things for you to notice. \\n\\n- Users can import trade records from one device or browser to another. \\nPlease note that user ID is bound to the browser you\'re using. In other words, it will vary depending on the browser or device that you use. When the data migration is done, the original user ID will become invalid, which means you can no longer see the trade records in the original one.\\n\\n- Data migration will not be affected by the status of your wallet connection.\\n\\n## What\'s Rolling ##\\nTwo weeks ago we had a [Twitter poll](https://twitter.com/HashgreenLabs/status/1526258001916530688?s=20&t=-dqCN0qI5_KyatFeZeRe5w) asking for your feedback about the integration of Goby wallet, and we received a handful of your feedback for the update. We would like to invite you to tell us about your thought of using Hashgreen DEX.\\n\\n### Feedback wanted ###\\n- Now we are looking for users to share with us your feedback.\\nIf you\'re interested in helping us improving our product, drop a message in our [Discord channel](https://discord.gg/KXvqv6cwAk) #ideas-and-feedback or tag `@HG | Daisy` and `@HG | James` in #general to let us know! Or you can just tell us about your feeling of using Hashgreen DEX and what can we improve directly at #ideas-and-feedback. Feedback is always wanted and appreciated! \\n\\n- Example feedback questions:\\n - Your experience using our DEX\\n - Opinions of the functions or design we\'ve had\\n - Any idea of tools or functions that can be integrated into our product"},{"id":"/weekly-update-9","metadata":{"permalink":"/blog/weekly-update-9","source":"@site/blog/weekly-update-9/index.md","title":"Weekly Update #9","description":"Hashgreen updates on: Goby wallet integration, and syncing order history.","date":"2022-05-23T00:00:00.000Z","formattedDate":"May 23, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"my orders","permalink":"/blog/tags/my-orders"},{"label":"wallet integration","permalink":"/blog/tags/wallet-integration"}],"readingTime":2.77,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #9","date":"2022-05-23T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","my orders","wallet integration"],"description":"Hashgreen updates on: Goby wallet integration, and syncing order history.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #10","permalink":"/blog/weekly-update-10"},"nextItem":{"title":"Weekly Update #8","permalink":"/blog/weekly-update-8"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n- [Goby wallet](https://www.goby.app/) has officially been integrated into [Hashgreen DEX](http://hash.green/)! \ud83e\udd29 \\n You can now make or take offers for [Chia Asset Tokens (CATs)](https://chialisp.com/docs/puzzles/cats/) directly in the browser. Enter the amount you wish to trade in Hashgreen DEX to match offers! \\n\\n- We\'ve received many valuable feedback, especially those from [our Twitter poll](https://twitter.com/HashgreenLabs/status/1526258001916530688?s=20&t=u8Yun-WenkZv9UeSwjz1Rg) since the release of Goby wallet integration on the testnet last week.\\n It seems like the majority of you are all hyped up about the integration of Goby wallet into Hashgreen DEX, so am I! Our team has begun modifying and adjusting details of the integration since last week, and we will keep on making sure that Hashgreen DEX and Goby are well-coordinated. \\n * We modified the notification message of wallet connection\'s status to give users a more definite indication. \\n * We fixed the bug in which the displayed address of the wallet was not synced with Goby.\\n\\n### 3 Steps to Trade with Goby Wallet in Hashgreen DEX ###\\n\\n:::note Prerequisites\\nPlease make sure you have installed Goby web extension with any of the supported browsers and have your Goby wallet ready.\\n:::\\n\\n1. Connect to Goby\\n\\n
Figure: Hit \\"Connect Wallet\\" at the navigation bar and a tab \\"Choose Wallet\\" will show up.
\\n
\\n\\n
\\n\\n
Figure: Choose Goby as the wallet to connect.
\\n
\\n\\n
\\n\\n
Figure: Connected! You are good to go.
\\n
\\n\\n
\\n

\\n\\n2. Check wallet information\\n\\n
Figure: Once it\'s connected, your address will be shown. Click to check wallet information.
\\n
\\n\\n
\\n\\n
Figure: You can copy your wallet address and disconnect your wallet here.
\\n
\\n\\n
\\n

\\n\\n3. Start trading\\n\\n- Hit the offer in `Order Book` to trade\\n
Figure: Hit the offer you\'d like to take and hit \\"Trade\\" once trade info shows up.
\\n
\\n\\n
\\n\\n
Figure: An independent tab will pop up from Goby. Hit \\"Sign\\" to approve the offer.
\\n
\\n\\n
\\n

\\n\\n- `Make Offer` directly in Hashgreen DEX\\n
Figure: Enter the amount directly in this section. Hit the arrow if you\'d like to switch.
\\n
\\n\\n
\\n\\n
Figure: Once the amount is entered, unit price will be shown and you will be able to hit \\"Trade\\".
\\n
\\n\\n
\\n\\n
Figure: An independent tab will pop up from Goby. Hit \\"Sign\\" to approve the offer.
\\n
\\n\\n
\\n

\\n\\n:::important Few things to be aware of...\\n* As you make a new offer on DEX, Goby will automatically create a same offer in the wallet.\\n* If the transaction fails on DEX, make sure to cancel it in Goby as well.\\n:::\\n\\n## What\'s Rolling ##\\n- Our development team is working on syncing data between different devices. We discovered the demand and benefit of syncing data across different devices, and it would be natural and more convenient for users to track their orders (i.e. `My Orders` in DEX), granting the fact that transactions are conducted via different devices of the same user."},{"id":"/weekly-update-8","metadata":{"permalink":"/blog/weekly-update-8","source":"@site/blog/weekly-update-8/index.md","title":"Weekly Update #8","description":"Hashgreen updates on: light/dark scheme and Goby wallet integration on the testnet","date":"2022-05-16T00:00:00.000Z","formattedDate":"May 16, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"wallet integration","permalink":"/blog/tags/wallet-integration"}],"readingTime":2.62,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #8","date":"2022-05-16T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","wallet integration"],"description":"Hashgreen updates on: light/dark scheme and Goby wallet integration on the testnet","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #9","permalink":"/blog/weekly-update-9"},"nextItem":{"title":"Weekly Update #7","permalink":"/blog/weekly-update-7"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n- Our team has finally released an official update for the light/dark scheme in [Hashgreen DEX](https://hash.green/) after fixing some bugs that occurred when switching between schemes. \\n We\'ve also made small adjustments to the color composition of the page in different schemes to increase readability. You can set up dark mode by clicking the switch button at the navigation bar. \\n\\n- We\'ve also worked through a few bugs of the frontend interface, making sure that your feedback is received and dealt with at all times.\\n\\n## What\'s Rolling ##\\n- Wallet integration for [Goby](https://www.goby.app/) is coming! \ud83d\ude0d\\n The development team has been devoting to finalizing wallet integration into our DEX, and now we are one step away from the one-click trading experience that you\'ve all been waiting for. Before the launch of Goby integration, which will soon be announced, we would like to invite you to help us test the wallet integration on the testnet and give us some feedback. (Instructions are given below.)\\n\\n- We have also started a poll at our [Twitter](https://twitter.com/HashgreenLabs/status/1526258001916530688), inquiring your feedback of which part of the integration that you love the most and which part of it can be improved. \\n After you\'ve tried it out at the testnet, please visit the page, vote, and leave us a comment. You can also visit #ideas-and-feedback channel at our [Discord](https://discord.com/invite/KXvqv6cwAk) to share with us what\'s your thought about it.\\n\\n:::note How Can you help to test the wallet integration?\\nWe will create a test market **TFRIES/TXCH** at the testnet and upload enough offers of **TFRIES requetsing TXCH** for you to make offers. You can also create offers with either one of the coins.\\n:::\\n\\n### Follow the Steps to Test Goby Wallet Integration ###\\n1. Make sure you have installed [Goby](https://www.goby.app/) wallet in your PC.\\n2. Enter [Hashgreen DEX\'s testnet](https://testnet10.hash.green/dex/TFRIES-TXCH). \\n3. Connect your Goby wallet with Hashgreen DEX. \\n\\n
Figure: Hit \\"Connect Wallet\\" at the navigation bar and the tab \\"Choose Wallet\\" will show up.
\\n
\\n\\n
\\n\\n
Figure: Choose Goby as the wallet to connect. Then a tab will pop up.
\\n
\\n\\n
\\n\\n
Figure: Type your password to unlock your Goby wallet.
\\n
\\n\\n
\\n\\n
Figure: You have successfully \\"Connected with Goby\\".
\\n
\\n\\n
\\n\\n

\\n\\n4. Switch from Mainnet to Tesetnet10 in your Goby wallet.\\n * Open your Goby wallet web extension.\\n * Go to Setting.\\n * Hit Advanced Options.\\n * Hit Networks.\\n * Change from Mainnet to Testnet10.\\n\\n:::tip Tip\\nOnce you\'ve switched from Mainnet to Testnet10, the color of your Goby web extension should change from green to blue. That\'s one way to tell if you have done it successfully. \ud83d\ude0f\\n:::\\n\\n5. Visit [this page](https://testnet10-faucet.chia.net/) and paste your address **(It will be a long string beginning with \\"txch\\")** to collect TXCH. You may wait several minutes until TXCH is received.\\n6. Go back to the trading page to make offers with TFRIES/TXCH. \\n7. Give us your feedback at our [Twitter](https://twitter.com/HashgreenLabs/status/1526258001916530688) or [Discord](https://discord.com/invite/KXvqv6cwAk)."},{"id":"/weekly-update-7","metadata":{"permalink":"/blog/weekly-update-7","source":"@site/blog/weekly-update-7/index.md","title":"Weekly Update #7","description":"Hashgreen updates on: brand new landing page, and live market status.","date":"2022-05-09T00:00:00.000Z","formattedDate":"May 9, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"market statistics","permalink":"/blog/tags/market-statistics"},{"label":"landing page","permalink":"/blog/tags/landing-page"}],"readingTime":1.575,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #7","date":"2022-05-09T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","market statistics","landing page"],"description":"Hashgreen updates on: brand new landing page, and live market status.","image":"./assets/banner.png"},"prevItem":{"title":"Weekly Update #8","permalink":"/blog/weekly-update-8"},"nextItem":{"title":"Weekly Update #6","permalink":"/blog/weekly-update-6"}},"content":"![banner](./assets/banner.png)\\n\\n## What\'s Been Done ##\\n- Our team has released a brand new landing page of [Hashgreen DEX](https://hash.green/). \\n Over the past week, We\'ve renovated the look of our landing page, including a few navigation components. We\'ve also added a live market status menu in the landing page, allowing you to instantly check upon the trade information at the landing page. \\n\\n\x3c!-- pic of the LDP --\x3e\\n
Figure: A brand new landing page is out!
\\n
\\n\\n\\n\\n
\\n\\n\x3c!-- pic of the scroll function --\x3e\\n
Figure: Scroll down to browse the current market status in the landing page.
\\n
\\n\\n\\n\\n
\\n\\n- You can browse the trading pairs or you can type in the search bar to search for the markets. \\n Once you\'ve identified the trading pair, you can hit the Trade button at the right end of the live status, and you will be directed to the exact trading page in Hashgreen DEX without having to select the market pair again. \\n\\n\x3c!-- pic of the search bar --\x3e\\n
Figure: Type here to view the live market status!
\\n
\\n\\n\\n\\n
\\n\\n\x3c!-- pic of the trade button --\x3e\\n
Figure: Hit the button to trade. It will lead you directly to the trading page.
\\n
\\n\\n\\n\\n
\\n\\n## What\'s Rolling ##\\n- The development team has been striving to release major updates that we planned to integrate into Hashgreen DEX.\\n In light of the situation that we decided to prioritize and focus on the major updates, the release for an optimal internationalization will be postponed. The language switch will therefore be temporarily taken down for maintenance in the near future.\\n\\n- The team has been working on an update for the light/dark scheme. We will optimize the switch and release it soon."},{"id":"/weekly-update-6","metadata":{"permalink":"/blog/weekly-update-6","source":"@site/blog/weekly-update-6/index.md","title":"Weekly Update #6","description":"Hashgreen updates on: multi-offer upload, new design of my orders, order book UI, and product facelift.","date":"2022-04-29T00:00:00.000Z","formattedDate":"April 29, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"my orders","permalink":"/blog/tags/my-orders"},{"label":"order book","permalink":"/blog/tags/order-book"}],"readingTime":3.085,"hasTruncateMarker":false,"authors":[{"name":"J.","title":"Community Lead","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/james.jpg","key":"james"}],"frontMatter":{"title":"Weekly Update #6","date":"2022-04-29T00:00:00.000Z","authors":["james"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","my orders","order book"],"description":"Hashgreen updates on: multi-offer upload, new design of my orders, order book UI, and product facelift.","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #7","permalink":"/blog/weekly-update-7"},"nextItem":{"title":"Best Chia Projects Bootstrapped on Hashgreen DEX","permalink":"/blog/airdrop-on-hashgreen-dex"}},"content":"![banner](./assets/banner.jpg)\\n\\nHello to all the readers, who have stayed with [Hashgreen](https://www.hashgreen.net/) along the way! \\n\\nMy name is James, the newly hired community lead of Hashgreen. I will take charge of the Weekly Update series and carry on providing information for future product updates. Harry will still publish tech blogs from time to time, leading you through finer details of Blockchain technology related to Chia and Hashgreen.\\n\\nOver the month, the Chia community seems to have been less active than before, yet with the recent release of [Chia Blockchain 1.3.4](https://github.com/Chia-Network/chia-blockchain/releases/tag/1.3.4). As for us, we have made a few updates on [Hashgreen DEX](https://hash.green/). \\n\\n## What\'s Been Done ##\\n\\n- Over the past few weeks, our DEX development team has implemented multi-offer upload into the web interface to make the process of transactions quicker and easier! \\n Users can now upload multiple [offer files](https://www.chia.net/offers/) simply by clicking the upload button or dragging and dropping offer files directly into the page. \\n\\n
Figure: You can now upload more than one offer file!
\\n
\\n\\n\\n\\n
\\n\\n- A new design of open orders and order history (now called my orders) is released.\\nIt\'s easier now for you to check the status of your orders and even make adjustments to it with a few clicks. Details of the trade information will be shown in the display board. The two dropdown menus at the top allow you to filter certain types of offers that you wish to see. You can also cancel your offer using the cancel button in the action column. Or you can cancel multiple offers by selecting them at once. \\n \\n
Figure: Click all markets or all status to manage your orders.
\\n
\\n\\n\\n\\n
\\n\\n- Our team has updated a new interface for the order book, in which we re-oriented the menu of the offers.\\n Offers asking or bidding a certain coin will be aligned with each other. You are able to expand or close the panels, to either compare the asking and bidding price or leave the order book with only one of the offers presented.\\n\\n
Figure: You can zoom in to see specific types of offers.
\\n
\\n\\n\\n\\n
\\n\\n- We have released an update for the header! We add a control button where old headers are put together with the user ID button that was temporarily removed. Light/dark scheme switch and language options are moved to the header as well. \\n\\n
Figure: User ID allows you to sync between different devices.
\\n
\\n\\n\\n\\n
\\n\\n
Figure: Here is the button to copy your user ID.
\\n
\\n\\n\\n\\n
\\n\\n
Figure: To merge records, press import once you enter your user ID.
\\n
\\n\\n\\n\\n
\\n\\n- We\'ve continued to iterate with new features in the DEX, some of which are dedicated to the feedback from our [Discord community](https://discord.gg/KXvqv6cwAk). \\n\\n## What\'s Rolling ##\\n\\n- AMM is still under slow but steady development. \\n Enabling AMMs on the Chia Blockchain turns out to be a really hard problem! If you\'d ask us when you will have HashgreenSwap to test out on the testnet, we expect it to be here in another two quarters! In the meantime, we are starting to think about the tokenomics for the Hashgreen Token, to not only allow the profits to circulate back to the community but also create an active and healthy scheme that lasts long.\\n\\n- In order to ameliorate the user experience, the UI/UX team will continue to remodel the web interface. \\n We are working hard on the new landing page besides a few more integrations!"},{"id":"/airdrop-on-hashgreen-dex","metadata":{"permalink":"/blog/airdrop-on-hashgreen-dex","source":"@site/blog/airdrop-on-hashgreen-dex/index.md","title":"Best Chia Projects Bootstrapped on Hashgreen DEX","description":"Here are some best projects on Chia Blockchain that you should follow. Hashgreen DEX is proud to have worked with these cool projects!","date":"2022-04-04T00:00:00.000Z","formattedDate":"April 4, 2022","tags":[{"label":"airdrop","permalink":"/blog/tags/airdrop"},{"label":"p2p","permalink":"/blog/tags/p-2-p"},{"label":"trivia","permalink":"/blog/tags/trivia"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":6.315,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Best Chia Projects Bootstrapped on Hashgreen DEX","date":"2022-04-04T00:00:00.000Z","authors":["stmharry"],"tags":["airdrop","p2p","trivia","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Here are some best projects on Chia Blockchain that you should follow. Hashgreen DEX is proud to have worked with these cool projects!","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #6","permalink":"/blog/weekly-update-6"},"nextItem":{"title":"Weekly Update #5","permalink":"/blog/weekly-update-5"}},"content":"![banner](./assets/banner.jpg)\\n\\nOver the months, since the release of [Chia Asset Tokens (CATs)](https://www.chia.net/2021/11/15/the-CATs-out-of-the-bag.en.html) and [Offer Files](https://www.chia.net/2022/01/12/chia-offers-are-here.en.html), we have seen a whole herd of CATs.\\nAt the time of writing, there are 289 CATs listed on [TAIL Database](https://www.taildatabase.com/), 580 CATs tracked on [spacescan.io](https://www.spacescan.io/xch/cat1/topTokens), and 72 CATs traded on [Hashgreen DEX](https://hash.green/).\\n\\nIn the past two weeks, we have implemented automatic tokens importing from TAIL Database, and starting this week, we will synchronize our CAT markets with them on a weekly basis.\\nOriginal (OG) tokens that are already listed with us will receive a blue checkmark to signify that we know what party is behind the token and where to contact the issuers.\\n\\nTo allow users to browse over CATs more efficiently, we categorize CAT markets into several types - stablecoin, NFT-like, meme tokens, platform tokens, and Chia official tokens.\\nYou can also search for and star your favorite tokens directly in the menu, saving you time and hassle to search up the CAT.\\n\\n
The new market selection menu allows you to quickly search up your CATs \ud83d\ude0d
\\n
\\n \\n
\\n\\nAs a DEX development team, we have seen various project teams during the period trying to engage their community in very creative ways.\\nSpecifically, there are a few different ways that we think are exciting that involve the Hashgreen DEX team in the loop, and we would like to share their experiences with you, in hopes of inspiring the future development of the Chia community.\\n\\n## Airdrop\\nAirdropping your tokens is the best way to get traction from the community.\\nAfter all, who doesn\'t love free tokens?\\nThere are a few project founders who have worked with us in the past to utilize our soon-to-be-released\u2122 airdrop tools.\\n\\n[Niocoin (NIOC)](https://niocoin.info/), [Nine (NINE)](https://n-chain.org/), [Fund My Laptop (FML)](https://fundmylaptop.com/), and [Zomb Studio (ZOMB)](https://www.zomb.studio/) are the projects that worked with us to airdrop their tokens, under the condition that token receivers have followed their social media accounts and Hashgreen\'s [Twitter](https://twitter.com/HashgreenLabs/) and [Discord](https://discord.gg/KXvqv6cwAk).\\n\\nOver the airdrop campaigns, we have tested several aspects of our code, including [blockchain reorgs](https://www.chia.net/assets/Chia-Business-Whitepaper-2021-02-09-v1.0.pdf), [duststorms](https://www.reddit.com/r/chia/comments/swrc4d/soooo_what_the_heck_is_a_dust_storm/), and our smart batch execution of airdrops.\\nResilience to these network conditions, and having a framework to minimize the impact of the UTXO (or coin set) model on the transaction execution are crucial for all the development teams on the Chia Blockchain.\\n\\n### What is a re-org (re-organization)?\\n\\nRe-orgs happen when there are temporary blockchain forks, and subsequent farmers ultimately choose one to continue, leaving the rest *re-org\'ed*.\\nWhat the users will experience is, that the supposedly settled transaction will revert from its temporarily confirmed status, and this feature of the blockchain is exactly why on Hashgreen DEX we employed a 16-block confirmation to allow you to track how sure the fund settlements are.\\n\\n### What is the dust storm?\\n[Reddit](https://www.reddit.com/r/chia/comments/swrc4d/soooo_what_the_heck_is_a_dust_storm/) explains it better than we do, but essentially some parties are spamming useless transactions on the blockchain, creating congestion and fee market at the same time.\\nTo note, this is perfectly normal - there is nothing shady with creating a dust storm, as blockchains are built to withstand these transaction requests.\\nThe dust storm transformed the Chia Blockchain into a place where all project developers and users are required to be aware of fees, which is healthy and sustainable.\\n\\nTo summarize, here are some catches with airdrops:\\n\\n:::tip Advantages\\n**Airdropping** brings high traction for your project since you directly provide them values, whether that value can ultimately be realized or not.\\n:::\\n\\n:::danger Caveats\\n**Airdropping** would unavoidably distribute a large number of your tokens to the wild so that there will be more supply than demand for a certain period that follows.\\nMake sure you have the corresponding plan to create demand by implementing events and platforms for people to meaningfully use your token.\\n:::\\n\\n\\n## Peer-to-Peer Token Offering\\nThere is a load of exciting NFT projects going on on the Chia Blockchain!\\nWhile the NFT standards are still under development, a few token communities are already offering fungible tokens that are promised minting rights, and some of them bootstrapped their NFT projects on Hashgreen DEX!\\n\\n[Space Marmots Premium (SM1)](https://spacemarmots.io/) and [Ultimate Farmer Club (UFCG)](https://twitter.com/HonestFarmer2) worked with us to utilize our market and order book API to automatically provide peer-to-peer offerings to the users.\\nThey combined have more than 100 successful token sales on Hashgreen DEX, and these events were very successful due to the project development teams\' swift actions and a diverse set of capabilities that [our trading API](https://docs.hash.green/dex/trading-api) provides.\\n\\n[Catmosphere (CATMOS)](https://catmos.io/) employed a cool strategy where they not only were selling their token at a price of 0.0010 XCH, but also offering a buy-back at 0.0011 XCH. \\nAll of these were done programmatically, and users can buy/sell the CATMOS token at will.\\nThe offerings provided an anchor to the price of CATMOS, and brought interest into the Catmosphere community and Hashgreen DEX.\\nOver the period, CATMOS was even the most traded asset on Hashgreen DEX!\\n\\n\\n### What can Hashgreen DEX API do?\\nWe offer a variety of functionalities from market exploration and public order book information, to private order management. \\nThe [market statistics endpoint](https://docs.hash.green/dex/trading-api#get-market-statistics) which provides real-time token price information and capitalization, is now being used by [TAIL Database](https://www.taildatabase.com/) and [XCH Universe](https://xchuniverse.com/) (Let us highlight you by reaching out to [contact@hashgreen.net](mailto:contact@hashgreen.net) if you are also using them!).\\n\\n:::tip Advantages\\n**P2P Offering** is a wonderful stage for NFT projects as we head into the heated development of NFT standards, which will be finalized sometime in the near future. \\nIt also provides the development team with sufficient funding to kick start their further larger-scale development.\\n:::\\n\\n:::danger Caveats\\n**P2P Offering** requires that you run a close-knit community group, and it is very prone to introduce user complaints when not enough updates are given back to the community.\\n:::\\n\\n## Trivia\\nAs many project devs have found out, community members love to accept challenges to pick their brains! \\n\\n[Space Marmots Premium (SM1)](https://spacemarmots.io/) and [Easter Egg (EGG)](https://easteregg.tk/) ran their exciting trivia events respectively on Groundhog Day and March 9th.\\nTheir formats are not exactly the same, but both involve a series of meticulously designed questions that lead to some web pages, further pointing to more carefully hidden links with [steganography](https://en.wikipedia.org/wiki/Steganography).\\nIn these links, community members can find their offer files for the CAT as a sweet reward.\\n\\nWe at Hashgreen had much fun co-hosting and spreading these events, and were more than happy to work with any project devs!\\n\\n:::tip Advantages\\n**Trivia** is the most intimate event you can host with your community. \\nIt sets up this *metaverse* for them so they learn the backstory of the project, tokens, and dynamics.\\nThey can even act as future advocates for your project!\\n:::\\n\\n:::danger Caveats\\nObviously, you cannot send out a large amount of your tokens on a trivia event - it is meant to be special and rewarding.\\nIt also takes quite some time to design the trivia questions and make them decently challenging but not excessively challenging, so your event ends within a defined time frame.\\n:::\\n\\n\\n## Summary\\n\\nWe talked about three different ways to kick start your Chia Asset Token (CAT) project: airdropping, peer-to-peer offering, and trivia games.\\nThere are a lot more CATs we are trading now on Hashgreen DEX, and we conveniently categorized them for you: stablecoins, NFT-like tokens, meme tokens, platform tokens, and official Chia tokens.\\nWe believe it is an exciting exploration scrolling through the different categories, and maybe you can find another cool project to follow in the long run!\\n\\nStart peer-to-peer trading today on Hashgreen DEX at [hash.green](https://hash.green/)."},{"id":"/weekly-update-5","metadata":{"permalink":"/blog/weekly-update-5","source":"@site/blog/weekly-update-5/index.md","title":"Weekly Update #5","description":"Hashgreen updates on: fee UX, market selection UI, and market stat API","date":"2022-03-21T00:00:00.000Z","formattedDate":"March 21, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"market statistics","permalink":"/blog/tags/market-statistics"}],"readingTime":2.17,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #5","date":"2022-03-21T00:00:00.000Z","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","market statistics"],"description":"Hashgreen updates on: fee UX, market selection UI, and market stat API","image":"./assets/banner.jpg"},"prevItem":{"title":"Best Chia Projects Bootstrapped on Hashgreen DEX","permalink":"/blog/airdrop-on-hashgreen-dex"},"nextItem":{"title":"Weekly Update #4","permalink":"/blog/weekly-update-4"}},"content":"![banner](./assets/banner.jpg)\\n\\n## What\'s Been Done\\n\\n- Over the past weeks, fees on the Chia Blockchain seems to be here to stay. \\n To allow our users get their transactions on chain quicker, we now provide users with the ability to supply fee by adding to the supplied Chia amount or removing from the requested Chia amount in their offers. \\n The suggested fee is hinted on the pop-up window for order book items, and is currently 0.0001 XCH.\\n We chose this number since it not only suffices to be on top of the mempool, but is miniscule (7 cents USD at the time of writing) for users.\\n In the future, we plan to implement more accurate fee estimators to give better fee hints and save you some bucks.\\n\\n:::note How is it done?\\n\\nWith Chia offers, Hashgreen is able to redirect the provided fees into a temporary address, then we generate a `SpendBundle` on the fly to spend the extra amounts as fee.\\nThis `SpendBundle` is then aggregated with the user offers before we push it to the Chia Blockchain.\\n\\n:::\\n\\n
Figure: These are two different options you can provide to match an offer you like
\\n
\\n\\n![fee-prompt](./assets/fee-prompt.jpg)\\n\\n
\\n\\n- We made it easier for users to submit your orders! \\n Simply copy the amounts provided in the pop-up panel when you hover on the offers you want to match against with the copy button.\\n You can also paste your offer file string directly on the web interface.\\n\\n
Figure: Here are the button to copy your preferred amounts to supply
\\n
\\n\\n![copy-fee](./assets/copy-fee.jpg)\\n\\n
\\n\\n
Figure: In the official Chia wallet, use this copy button to copy the raw offer file into your clipboard
\\n\\n![copy-offer](./assets/copy-offer.jpg)\\n\\n
Figure: Press this big paste button to upload your offer file
\\n\\n![paste-offer](./assets/paste-offer.jpg)\\n\\n- Many partners are starting to integrate our [Market Statistics API](/dex/trading-api#get-market-statistics) into their platforms.\\n The previous generation were slow and bulky, taking nearly 30 seconds to complete a call.\\n We have optimized it to return the results in under half a second.\\n\\n- New market selection menu is now available at [UAT interface](https://testnet10.hash.green/dex).\\n If you want the UAT interface to connect with mainnet, head to [UAT settings](https://testnet10.hash.green/dex/settings) and toggle on `PROD`.\\n\\n![market-selection](./assets/market-selection.jpg)\\n\\n- We fixed many bugs on the frontend interface, including incorrect display of order status (sometimes it shows \\"Confirming undefined\\"), and user token retrieval errors.\\n\\n## What\'s Rolling\\n\\n- The smart coin team is coding up the first version of AMM coin driver for an MVP AMM protocol.\\n As time goes on, we will gradually implement more standard functionalities in current AMMs!"},{"id":"/weekly-update-4","metadata":{"permalink":"/blog/weekly-update-4","source":"@site/blog/weekly-update-4/index.md","title":"Weekly Update #4","description":"Hashgreen updates on: price/trade API, fee support, product facelift, and massive token listing","date":"2022-03-10T00:00:00.000Z","formattedDate":"March 10, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":1.915,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #4","date":"2022-03-10T00:00:00.000Z","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Hashgreen updates on: price/trade API, fee support, product facelift, and massive token listing","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #5","permalink":"/blog/weekly-update-5"},"nextItem":{"title":"Weekly Update #3","permalink":"/blog/2022/03/02/weekly-update"}},"content":"![banner](./assets/banner.jpg)\\n\\n## What\'s Been Done\\n\\n- Over the weeks, we have been observing some users to submit deliberately mispriced orders and as a result, displacing the price reported in [market statistics](/dex/trading-api#get-trade-history).\\n We have adopted feedback from our [community member Bluemoon](https://discord.com/channels/920892922969354311/922958572407632024/943857984482738196) to filter trade prices according to the current order book. \\n The `price` field now is a stabler measure of the market.\\n For existing API users who require stable price sources, there is nothing you need to do; for developers who want to see all trades including the mispriced ones, please check out [Trade History API](/dex/trading-api#get-trade-history).\\n\\n- You can now access all market statistics with [Market Statistics API](/dex/trading-api#get-trade-history) by leaving the `market_id` field blank.\\n\\n- Over the course of the week, we added several tokens, including [Little Lambo Coin](https://littlelambocoin.com/), [Green Wings](https://wings.green/), and [Easter Egg](https://easteregg.tk/). \\n These community developers are have a blast with all kinds of activities!\\n Active participation from community members is a critical factor to a project\'s success, and we enjoy co-hosting all sorts of events to foster the communities.\\n\\n- We implemented support for fee on Hashgreen DEX and will soon roll out on the mainnet. \\n Under dust storm conditions, it might take a few hours to settle your trades, but now you will be able to optionally receive a little bit less XCH or pay a little more XCH as the network fee to expedite your orders.\\n The frontend will indicate the suggested fee according to network conditions, and usually a 0.0001 XCH will get your offers settled in no time!\\n\\n- The UI/UX team continues to implement the product facelift.\\n\\n## What\'s Rolling\\n\\n- Goby integration, after reaching out to the Goby team, turns out to be not possible at the time of writing since the ability to make offers from Goby is still being implemented.\\n Current integrations on other platforms rely on the offer taking feature, which has already been a part of previous Goby feature set. \\n As briefly explained in [a blog post](/blog/2022/01/29/introducing-hashgreen-dex), we believe an efficient DeFi system would require the operators aggregate the offers, so we are now waiting good news from the Goby team about the offer making functionality.\\n\\n- We soon will start listing all tokens on the [TAIL Database](https://www.taildatabase.com/), compacted in the new market selection menu.\\n You can even star your favorite CATs!"},{"id":"/2022/03/02/weekly-update","metadata":{"permalink":"/blog/2022/03/02/weekly-update","source":"@site/blog/2022-03-02-weekly-update/index.md","title":"Weekly Update #3","description":"Hashgreen updates on: community airdrop tools, integration with taildatabase & Goby, and AMM","date":"2022-03-02T00:00:00.000Z","formattedDate":"March 2, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"chialisp","permalink":"/blog/tags/chialisp"}],"readingTime":2.34,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #3","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","chialisp"],"description":"Hashgreen updates on: community airdrop tools, integration with taildatabase & Goby, and AMM","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #4","permalink":"/blog/weekly-update-4"},"nextItem":{"title":"Weekly Update #2","permalink":"/blog/2022/02/14/weekly-update"}},"content":"![banner](./assets/banner.jpg)\\n\\nThis is a long overdue update to the community!\\nDuring the past two weeks, we are looking at other aspects of development on the Chia Blockchain.\\n\\n## What\'s Been Done\\n\\n- We worked with many project developers, including [NINE](https://n-chain.org/), [NioCoin](https://twitter.com/NioCoinInfo), [Zomb Studios](https://www.zomb.studio/), and [FundMyLaptop](https://fundmylaptop.com) on their airdropping campaign with our in-house airdrop tools.\\n The need for such a tool for project developers cannot be overstated, and we managed to test it fairly thoroughly over the duststorm, sending out thousands of transactions on Chia.\\n The airdrop tools is aimed for a open source later this month.\\n\\n- The chialisp team is developing a chialisp library that enables secure smart coin development on Chia, much like [OpenZeppelin](https://github.com/OpenZeppelin/openzeppelin-contracts) on Ethereum.\\n The goal is to not only establish a set of tools for easier smart coin development, but also re-implement some standards (e.g., [CATs](https://chialisp.com/docs/puzzles/cats)) for these advanced developers to understand the use case.\\n Below is an sneak peek on the square root function we implemented which would be a core utility function for AMMs!\\n\\n```lisp\\n(\\n ;; Babylonian method for square root.\\n \\n (defun cypher.math.sqrt-loop-babylonian (var var1 var2)\\n\\n (if (> var1 var2)\\n (cypher.math.sqrt-loop-babylonian\\n var var2 (/ (+ (/ var var2) var2) 2))\\n var1\\n )\\n )\\n\\n (defun cypher.math.sqrt (var)\\n (if (> var 3)\\n (cypher.math.sqrt-loop-babylonian var var (+ (/ var 2) 1))\\n (if (> var 0) 1 (if (= var 0) 0 (x)))\\n )\\n )\\n)\\n```\\n\\n- The backend team wrapped up integration with the [TAIL Database](https://www.taildatabase.com/).\\n We now have all the community CATs in our database, and once the new market selection menu is rolled out, you will be able to easily search up token markets! \\n\\n- The UI/UX team worked through the first draft on the user interface refactor on Figma. \\n\\n- We onboarded a frontend engineer, Henry, to help with mobile wallet integration. \\n He will work with Goby wallet to enable that one-click trading experience. \\n\\n## What\'s Rolling\\n\\n- Goby integration is apparently the most requested feature! \\n However, unlike [offerpool](https://offerpool.io/) and [offerbin](https://offerbin.io/), Hashgreen implements our technology to be an *offer aggregator* so the raw offer files are never exposed to fellow users.\\n We instead ask the wallet to upload a counter-offer to our website, which we can then be combined with existing offer on Hashgreen for blockchain execution.\\n\\n- Due to the shear number of CATs out there, we are prioritizing the market selection menu refactoring.\\n The upgraded menu would allow you to easily navigate hundreds of CATs, star your favorite ones, and group CATs by their types.\\n\\n- We noticed that there is a need for a robust transaction micro-service to handle dApp requests, especially during the duststorm where fee is non-zero and when everyone suffers.\\n This transaction micro-service will not only deterministically make sure a transaction is delivered, but also provide on-chain fee estimates for our upcoming dApps."},{"id":"/2022/02/14/weekly-update","metadata":{"permalink":"/blog/2022/02/14/weekly-update","source":"@site/blog/2022-02-14-weekly-update/index.md","title":"Weekly Update #2","description":"Hashgreen updates on: USD quotes in API, i18n inclusion of Chinese and Spanish, and AMM initial discussion","date":"2022-02-14T00:00:00.000Z","formattedDate":"February 14, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"trading api","permalink":"/blog/tags/trading-api"},{"label":"amm","permalink":"/blog/tags/amm"}],"readingTime":2.11,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #2","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","trading api","amm"],"description":"Hashgreen updates on: USD quotes in API, i18n inclusion of Chinese and Spanish, and AMM initial discussion","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #3","permalink":"/blog/2022/03/02/weekly-update"},"nextItem":{"title":"Weekly Update #1","permalink":"/blog/2022/02/07/weekly-update"}},"content":"![banner](./assets/banner.jpg)\\n\\n## What\'s Been Done\\n\\n### API Access\\n\\n[Trading API](/dex/trading-api) has been the biggest update for the week. \\nWe are committed to provide a diverse set of API for developers so the community can grow with us.\\nAt the same time, we would like you to be explicit about the usage of Hashgreen APIs in your products to spread the words!\\nLet us know your story and the creative use of both open market information and statistics.\\n\\n- We added USD quotes and USD volume in the [market stat](/dex/trading-api#get-market-statistics) endpoint.\\n The fully diluted market cap for the base currency in USD (the token in the front of the trading pair) is also provided as a ball park measure of how big the token is.\\n \\nNote that the reference prices are only estimates are can be vulnerable to self-trading exploits.\\nPlease do not use currency price quotes directly in mission critical systems but only as a good reference.\\n\\n\\n### User Interface\\n\\n- The frontend team has been working hard on i18n (check out the [beta site](https://testnet10.hash.green/dex)), and will be soon be pushed to the production site.\\n We are offering Chinese and Spanish as a taste test, and are preparing for a community-based translation campaign!\\n\\n![i18n](./assets/i18n.jpg)\\n\\n- The aforementioned market statistics are now displayed as a part of the market header. \\n You can easily judge market liquidity based on the USD volume.\\n\\n![i18n](./assets/market-stat.jpg)\\n\\n- We\'ve also worked through a bunch of frontend bug fixes including market selection menu overflow and asset filter menu.\\n We won\'t bother detailing them but rest assured we are incorporating community feedback.\\n\\n\\n## What\'s Rolling\\n\\n- Now that we have the fully diluted market cap, we are making a market overview menu to highlight the most traded and the highest cap tokens.\\n\\n- The fully diluted market cap does not holistically represent the true market capitalization as any whale can HODL the majority of the tokens.\\n What is more representative is the market cap based on circulating supply which can be tricky to automatically detect on Chia. \\n We are working on some smart algorithms to pick that up from the blockchain.\\n\\n- In the long run, we realize we need a more elegant product UI to streamline user experience.\\n The recently onboarded UI designer is starting to work hard on the refactor.\\n\\n- We had some very fruitful discussion on the mathematical design of automated market makers (AMM).\\n There are some pretty important implications translating everything from account-based to coin-based models, and we are pretty sure we nailed it correctly."},{"id":"/2022/02/07/weekly-update","metadata":{"permalink":"/blog/2022/02/07/weekly-update","source":"@site/blog/2022-02-07-weekly-update/index.md","title":"Weekly Update #1","description":"Hashgreen updates on: UI and trading API release","date":"2022-02-07T00:00:00.000Z","formattedDate":"February 7, 2022","tags":[{"label":"update","permalink":"/blog/tags/update"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"},{"label":"amm","permalink":"/blog/tags/amm"},{"label":"trading api","permalink":"/blog/tags/trading-api"},{"label":"market statistics","permalink":"/blog/tags/market-statistics"}],"readingTime":2.245,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Weekly Update #1","authors":["stmharry"],"tags":["update","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup","amm","trading api","market statistics"],"description":"Hashgreen updates on: UI and trading API release","image":"./assets/banner.jpg"},"prevItem":{"title":"Weekly Update #2","permalink":"/blog/2022/02/14/weekly-update"},"nextItem":{"title":"Introducing the Hashgreen DEX","permalink":"/blog/2022/01/29/introducing-hashgreen-dex"}},"content":"![banner](./assets/banner.jpg)\\n\\nHappy lunar new year everyone!\\nThe Asia-based Hashgreen dev team had a great lunar new year over the past week!\\nWe find that our [Discord community](https://discord.gg/SESAPmJXFD) has been very active, and some updates might get buried under the exciting updates on new CAT tokens joining the family every other few days.\\nHence we are starting to update you about our technical progress on a weekly basis.\\n\\n## What\'s Been Done\\n\\n### User Interface\\n\\n- We added the light/dark scheme switch to make your eyes more comfortable, located in the footer section.\\n- Right beside the market selection button, there is a row of market statistics showing 24h high, 24h low, volume, and the current price.\\n\\n### API Access\\n\\n- To facilitate automatic trading, we released our [first API doc on trading](/dex/trading-api), including the ability to list markets, order books, and personal order creation/cancellation.\\n We envision more and more participants can be in this process to reach the best market efficiency, involving arbitrage loops across Hashgreen DEX and other exchanges.\\n In the loop, you will have to involve [Stably Prime](https://prime.stably.io) as they are the only stablecoin issuer on Chia right now.\\n\\n- The statistics of markets can now be retrieved via [stat API](/dex/trading-api#get-market-statistics).\\n In the first version, we provide 24-hour statistics on the traded volumes, and are working towards representing the volumes in USD.\\n\\n### Personnel\\n\\n- We onboarded a UI/UX designer, Ann, to help us improve our product further. \\n There are some complicated integration with our partners including the official Chia wallet, a in-development Chrome extension wallet, and potentially one other browser-based wallet.\\n We imagine the UX flow to be increasingly complicated, and hence it is time to involve specialists.\\n\\n## What\'s Rolling\\n\\n- I18n is coming! We aim to build Hashgreen DEX to be a platform everyone in the world can enjoy, and we soon will need your help to translate our product!\\n\\n- The smart contract team is working on several chialisp designs, which can be a pretty prolonged process as it requires not only security audit but implementation and integration with wallet partners.\\n One of the most immediate improvement to the Hashgreen DEX is to use an alternate version of offers to allow partial filling of offers.\\n\\n- The next critical piece for the on-chain economy and DeFi will be Automated Market Maker (AMM)!\\n AMM implementation on the Chia Blockchain will require some bells and whistles though, and we are working very hard to propose a first draft.\\n This set of chialisp implementation will not only be secure and fair from a user\'s perspectively, eliminating potential extractable values.\\n All of these are still in development, but we want to stay tuned for more exciting updates!"},{"id":"/2022/01/29/introducing-hashgreen-dex","metadata":{"permalink":"/blog/2022/01/29/introducing-hashgreen-dex","source":"@site/blog/2022-01-29-introducing-hashgreen-dex/index.md","title":"Introducing the Hashgreen DEX","description":"Hashgreen blog on: DEX release and philosophy","date":"2022-01-29T00:00:00.000Z","formattedDate":"January 29, 2022","tags":[{"label":"tech blog","permalink":"/blog/tags/tech-blog"},{"label":"hashgreen","permalink":"/blog/tags/hashgreen"},{"label":"chia","permalink":"/blog/tags/chia"},{"label":"blockchain","permalink":"/blog/tags/blockchain"},{"label":"dex","permalink":"/blog/tags/dex"},{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency"},{"label":"mit","permalink":"/blog/tags/mit"},{"label":"startup","permalink":"/blog/tags/startup"}],"readingTime":12.405,"hasTruncateMarker":false,"authors":[{"name":"H.","title":"Founder","imageURL":"https://hashgreen-assets.s3.ca-central-1.amazonaws.com/people/h.jpg","key":"stmharry"}],"frontMatter":{"title":"Introducing the Hashgreen DEX","authors":["stmharry"],"tags":["tech blog","hashgreen","chia","blockchain","dex","cryptocurrency","mit","startup"],"description":"Hashgreen blog on: DEX release and philosophy","image":"./assets/hashgreen-dex-banner.jpg"},"prevItem":{"title":"Weekly Update #1","permalink":"/blog/2022/02/07/weekly-update"}},"content":"import { Icon } from \'@iconify/react\';\\n\\nHashgreen successfully released a decentralized exchange on Jan 12, 2022, in a joint live event with [Chia Network](https://chia.net).\\nIf you were not at the event with us, here is a clip of the presentation on the [Hashgreen Decentralized Exchange (DEX)](https://hash.green).\\n\\n\\n\\nChia Blockchain introduced its first on-chain atomic token swap standard, powered by the underlying smart coin language [Chialisp](https://chialisp.com).\\nUsing this standard, users can start exchanging tokens on the chain, including the Chia (XCH) token and other [Chia Asset Tokens (CATs)](https://chialisp.com/docs/puzzles/cats/).\\nThis functionality opens a lot of possibilities on the blockchain, including the first batch of dApps, with [Hashgreen DEX](https://hash.green) being one of them.\\n\\nWe at Hashgreen have been working hard for months to develop the project and integrate our interface into the official [Chia wallet](https://chia.net/download).\\nAfter the successful launch, we received many questions on how and why we decided to build [Hashgreen DEX](https://hash.green) this way.\\n\\nIn today\'s post, we want to take you through a journey - a journey on Chia\'s most basic technical building blocks, how and why we crafted the first DEX on the Chia Blockchain, and finally, how we envision DeFi will look like on Chia.\\n\\n## Prologue \\n\\nLet\'s not pretend this has never happened. \\nYou opened up your Chia wallet, trying to [exchange](https://hash.green/dex/XCH-USDS) some Chia (XCH) for some Stably USD (USDS) on the Hashgreen DEX.\\nThis popped out, saying you have a lot less *spendable balance* than you have *total balance*...\\n\\n![Oh No!](./assets/oh-no.jpg)\\n\\n...what happened! If I have all the XCH, why am I unable to send them all, or make an offer out of it? Well, UTXO is the main culprit here. \\n\\n## UTXO\\n\\nShort for *unspent transaction outputs*, this is nothing new and was introduced by Bitcoin. \\nInstead of having a balance sheet for every user on the blockchain, Chia tracks your funds using UTXOs (or, rather, *coin set* to be more accurate), which is a technically fancy way of referring to [coins](https://chialisp.com/docs/coins_spends_and_wallets/).\\nCoins have predefined ways to be spent, and are capable of producing coin outputs when they are spent.\\nMoreover, any given coin is only ever created once and spent once -- and that\'s it! \\nThis philosophy focuses on tracking the *change of state* on the blockchain as opposed to recording the whole state.\\n\\n:::info\\nYou can easily track how many coins are created in the blockchain using [explorers](https://xchscan.com/txns?block=1000001).\\n:::\\n\\nThe choice of using UTXOs on Chia leads to many interesting and advantageous properties:\\n\\n- The verification of coin spending is highly parallelizable since each coin can only have one interaction.\\n In contrast, account-model-based blockchains need to handle transactions sequentially.\\n\\n- The balance is a first-class citizen on the Chia Blockchain! \\n Instead of being a state stored in a mapping table, every coin on Chia has an explicit *amount*, the total of which has to stay constant. \\n (Well except when you farmed a block, you receive 2 XCH in total out of thin air.)\\n\\n- Since the transactions in a single block are *order-less* (i.e. their order does not matter as long as they are included in the block), the attack surface of smart contracts reduces drastically. \\n In other blockchains, we often hear the term *Miner Extractable Value (MEV)*, which refers to the profit that a miner could secure by manipulating the ordering of the transactions. \\n\\n:::info\\n[It is estimated](https://explore.flashbots.net/) that over $576M MEV, as of the time of writing, has been extracted from Ethereum.\\n:::\\n\\nWith these seemingly wonderful advantages, it sounds like a no-brainer that every chain should adopt this model as opposed to the account model.\\nApparently there are some trade-offs; trade-offs that takes additional effort to mitigate but are definitely worth it.\\n\\n### Implications to Users\\n\\nLet\'s hop back onto our spendable balance problem.\\n\\nWhen we make transactions, we are in fact spending a coin or coins that might sum up to more than what we try to send.\\nFor example, imagine you are a lucky farmer who farmed a 1.75 XCH coin and wish to send 0.1 XCH to your friend to let them HODL.\\nWhen you send the XCH, you are actually destroying the initial 1.75 XCH coin, creating a 0.1 XCH for your friend, and sending the rest 1.65 XCH back to yourself.\\nDuring the wait for the change coin to come back, your funds are effectively reduced, and that is why the Chia wallet shows a lower *spendable balance* as you cannot double-spend a coin.\\n\\n[Offers](https://www.chia.net/offers/) are more or less the same: as you create offers to exchange your tokens, you do not want to accidentally spend your coins and invalidate the offer.\\nThe Chia wallet was kind enough to *soft-lock* the coin so that it cannot be used, until you either cancel the offer or when the offer has been fulfilled.\\n\\n### Implications to Developers\\n\\nThe UTXO model, while having a significantly smaller attack surface than that of the account model, is trickier for protocol design.\\nIf you still remember, transactions in the same block are spent *simultaneously* and every coin is only spent exactly once. This implies that if we want to build a more advanced application, we have to design while keeping the ability to perform multiple interactions in mind.\\nTake a very basic application for example - an automated market maker (AMM).\\n\\nThe most renowned instance of an AMM is [Uniswap](https://uniswap.org/) where *swappers* would exchange their assets with a liquidity pool at a *market price* determined by the amount of assets held in the pool.\\nWhen Uniswap contracts are executed, they run sequentially, creating an interaction between the swapper and the pool each time.\\nYet on the Chia Blockchain, we cannot naively queue up user exchange requests sequentially, since there is only *one* pool with *one* coin present.\\nThis produces several challenges: For example, exchange operations would need to be aggregated somehow to interact with the pool together. \\nFurthermore, we need to ensure price fairness, resist against denial of service attacks, and overcome many other problems!\\n\\nThere are many proposed solutions on other UTXO-based blockchains, and for the sake of brevity, we will include the discussion in future posts.\\n\\n:::tip\\nIn short, clever design choices have to be made for dApps, but when smart contracts are carefully crafted, UTXO-based blockchains have better security guarantees and efficiency. \\n:::\\n\\n## Chia\'s Take\\n\\nBitcoin was successful, but as a *store of value*, not as a successful technological demonstration.\\nBram Cohen himself wrote about [how Chia\'s technical motivation stemmed from Bitcoin](https://www.chia.net/2021/05/27/Agrgregated-Sigs-Taproot-Graftroot.html), and as a last-mover, Chia was able to get things right the first try.\\n\\nOn day one, Chia shipped with the full capability to process smart contracts (or, smart coins, to be more accurate).\\nThe on-chain language, [chialisp](https://chialisp.com/), powers many existing features such as [singleton](https://chialisp.com/docs/puzzles/singletons), [Chia Asset Token (CAT)](https://chialisp.com/docs/puzzles/cats), and even [offers](https://chialisp.com/docs/puzzles/offers).\\nThe programs for smart coins themselves were not actually stored on-chain, but rather, its Merkle root hash is.\\nOne does not have to reveal the program until the coins are spent, thus greatly reducing the attack surface.\\nThese smart coin primitives are also extremely composable, giving developers building blocks for their decentralized applications.\\n\\nTo date, there is a prosperous community around CATs -- project developers issuing their own tokens and project followers HODLing and trading.\\nWe at Hashgreen believe there are more exciting things to come in the Chia ecosystem, but first, let us take a look at how we built the Hashgreen DEX and why it is designed in this way.\\n\\n\\n## Hashgreen DEX \\n\\n[Chia wrote an in-depth analysis](https://chialisp.com/docs/puzzles/offers#introduction) about how offers work technologically and how they can be used in dApps.\\nIn case you have not read it, here\'s a quick summary:\\n\\n:::info\\nOffers are serialized off-chain commitments to swap coins for coins.\\nAnyone can take that file and complete the other side of the swap, sending it to the blockchain to settle.\\nWithout the other half of the trade, no one would be able to spend your coins or steal your funds.\\n:::\\n\\nIt is intuitive that, you can send your offer files around in channels like [Keybase](https://keybase.io/team/chia_network.public) and [Discord](https://discord.com/channels/920892922969354311/936601952064782347), yet you will soon realize -- the prices you get are nowhere close to optimal.\\nLiquidity is plain disastrous with vanilla peer-to-peer trading, and this is the main push for more advanced dApps.\\nSome examples are [OfferBin](https://offerbin.io/) and [OfferPool](https://offerpool.io/) which provide offer upload, sorting, and download services.\\nThey operate just like Craigslist: users are responsible for submitting the offers, and pushing aggregated offers to full nodes on their own.\\n\\n### Problems We Solve \\n\\nInterestingly, Hashgreen did consider this solution, and we observed several potential problems with this Craigslist approach and ultimately went with our current DEX approach.\\n\\n\\n1. **User Contention**\\n\\n These Craigslist-like offer pastebins will ultimately face an unsolvable challenge with offer *contention*. \\n Concretely, contention happens when an offer was downloaded by different parties and spent in the same block. \\n In a fee market, the spends with lower fees will be discarded while the one with the highest fee will go through.\\n While the fee rule itself is totally fair, users with an honest intention to trade in the market but using lower fees will unwillingly have to give up and look for other trades.\\n\\n Most users do not experience contention now since the market velocity is relatively slow at this point, yet in some cases when there are sudden spikes in trades, contention will become obvious.\\n The SM1 token backed by Chris from The Chia Plot [went on a sale on OfferBin](https://thechiaplot.net/2022/01/21/first-major-sale-using-decentralized-chia-offers-mostly-successful/), and one unfortunate conclusion Chris drew was that *too many people* participating in the auction can cause problems on OfferBin, in line with what we discussed above.\\n\\n That is exactly why we opted for a download-free solution: instead of users bringing the offers home and making their counter-offers, we *aggregate* offers on two sides, immediately bringing both down from the order book, and pushing them to the chain on your behalf.\\n Not only are we unable to mess with your fund, but we also are unable to cheat you since the swaps are guaranteed by chialisp.\\n\\n2. **Scalability**\\n\\n We want there to be market makers in the game.\\n We want there to be arbitrageurs in the game.\\n We want there to be hobby day traders in the game.\\n None of these would be possible without an API interface that is easy to play with and use.\\n Hashgreen is drafting up documentation on trading API, which would be finalized soon. \\n After its release, we expect people to take advantage of other existing markets to form a closed loop to both stabilize the price and increase liquidity.\\n One interesting thing we have observed, at the time of writing, the [XCH/USDS pair](https://hash.green/dex/XCH-USDS) is typically higher in price than other XCH/USD pairs in different markets.\\n We hypothesize that many interested buyers are gradually entering the market, obtaining XCH with their freshly withdrawn Stably USD, and obviously someone else can obtain XCH at a slightly lower price in overseas markets.\\n\\n3. **Expandability**\\n\\n There are many plans from Hashgreen to upgrade our DEX.\\n To be a fully functioning DEX, one would typically expect there to be features like partial order fills, limit orders, and even market orders.\\n We\'ve identified some upgrade paths to the existing offers in order to support these features, and it wouldn\'t require a huge UX remake to integrate them.\\n On the contrary, it might be somewhat confusing to implement these features into Craigslist-like services.\\n\\n4. **Interoperability**\\n\\n News about automatic market maker (AMM) development is on the street. \\n Once an AMM is out on the market, we can easily hook you up to trade against AMMs with zero wait time for matching. \\n Plus, we are always working closely with the Chia team to create a smoother trading UX experience from Hashgreen DEX to your Chia wallet!\\n\\n\\n### Open Questions\\n\\nAdmittedly, several aspects need to be discussed in-depth about the DEX working principles, and we will briefly mention them here. \\n\\n- **Operator Extractable Values (OEV)**\\n\\n OEV not only covers the previously mentioned miner extractable values (MEV), but also covers the values extractable by aggregators like Hashgreen DEX.\\n In principle, if there are enough orders on the market, they can create an overlap in prices.\\n Aggregators, having observed this phenomenon, can pocket the spread by buying up the cheaper sell offer and selling off the more expensive buy offer simultaneously, pocketing the spread.\\n While we are honest and only match exact offers from two sides, it is not guaranteed that every aggregator will be a good actor.\\n In our preliminary exploration with AMMs, we have found some countermeasures to ensure aggregator honesty in a trustless manner with chialisp.\\n The detail of the mechanisms will certainly be revealed and explained in-depth after we release the product, but for the time being we would love to work behind the curtains for some more.\\n\\n- **Decentralization**\\n\\n [OfferPool](https://offerpool.io/) sets out to be another offer pastebin site to combat the *centralization* of offer files.\\n The arguments of anti-centralization do make sense up to a certain point, since those were the driving force behind the existence of blockchain technology.\\n However, when already operating on a decentralized infrastructure, how much more decentralization is required is debatable, as having scattered decentralized services might lead to inefficiency in the application.\\n Take an AMM for example, having more total values locked (TVL) in the protocol means that service users would enjoy a better price. \\n Despite being centralized in terms of capital concentration, not a single party is able to single-handedly control the capital since the rules behind the capital movement are crystal clear.\\n Hence we believe the better argument is that, the protocols need to be fully transparent to allow the blockchain to do its job at ensuring decentralized and trustless execution.\\n\\n## Summary\\n\\nWorking on the Chia Blockchain certainly brings many unique challenges to the Hashgreen team, and we want to tell you that this [MIT-based team](https://www.hashgreen.net/) is not afraid of challenges! \\n\\nAlong the way, we have heard of perspectives on Chia\'s development purely based on its price, but this is simply an unhealthy view on a tech-heavy project.\\nBeing one of the first developers on Chia, we are journeying through its infancy as well as you are, and enabling more and more applications on our way.\\nAt any given point in time, we might find ourselves having to make trade-offs in either protocol design or system deployment, but rest assured that we take a *first principled* approach with the user\'s best interest at top priority.\\nIn order for us to communicate these complex ideas with you, we are starting this blog to periodically fill you in with more development progress and technological insights for the Chia Blockchain.\\n\\nIf you have more questions, you can refer to the [FAQs](/) or follow us on social media ([Discord](https://discord.gg/4RbcEHGaTg) and [Twitter](https://twitter.com/HashgreenInc/)).\\nThanks for staying with us!"}]}')}}]); \ No newline at end of file diff --git a/assets/js/bc447528.78e075df.js b/assets/js/bc447528.c6d40713.js similarity index 79% rename from assets/js/bc447528.78e075df.js rename to assets/js/bc447528.c6d40713.js index a19af09..a477039 100644 --- a/assets/js/bc447528.78e075df.js +++ b/assets/js/bc447528.c6d40713.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2394],{9212:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/cryptocurrency","page":1,"postsPerPage":10,"totalPages":3,"totalCount":24,"nextPage":"/blog/tags/cryptocurrency/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2394],{9212:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/cryptocurrency","page":1,"postsPerPage":10,"totalPages":3,"totalCount":25,"nextPage":"/blog/tags/cryptocurrency/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/cf0fd668.1b78fcd9.js b/assets/js/cf0fd668.b0d82a64.js similarity index 87% rename from assets/js/cf0fd668.1b78fcd9.js rename to assets/js/cf0fd668.b0d82a64.js index 3cb01d8..78dea6a 100644 --- a/assets/js/cf0fd668.1b78fcd9.js +++ b/assets/js/cf0fd668.b0d82a64.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2356],{3479:function(s){s.exports=JSON.parse('{"label":"startup","permalink":"/blog/tags/startup","allTagsPath":"/blog/tags","count":24}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2356],{3479:function(s){s.exports=JSON.parse('{"label":"startup","permalink":"/blog/tags/startup","allTagsPath":"/blog/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/d1100fbe.91032bcc.js b/assets/js/d1100fbe.ba208ee5.js similarity index 82% rename from assets/js/d1100fbe.91032bcc.js rename to assets/js/d1100fbe.ba208ee5.js index d57c39c..af45d9c 100644 --- a/assets/js/d1100fbe.91032bcc.js +++ b/assets/js/d1100fbe.ba208ee5.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7637],{7796:function(e){e.exports=JSON.parse('{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency","allTagsPath":"/blog/tags","count":24}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7637],{7796:function(e){e.exports=JSON.parse('{"label":"cryptocurrency","permalink":"/blog/tags/cryptocurrency","allTagsPath":"/blog/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/da5741a8.738b6011.js b/assets/js/da5741a8.5be11331.js similarity index 90% rename from assets/js/da5741a8.738b6011.js rename to assets/js/da5741a8.5be11331.js index 43b9556..a83e660 100644 --- a/assets/js/da5741a8.738b6011.js +++ b/assets/js/da5741a8.5be11331.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2939],{5873:function(e){e.exports=JSON.parse('{"label":"amm","permalink":"/blog/tags/amm","allTagsPath":"/blog/tags","count":12}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2939],{5873:function(e){e.exports=JSON.parse('{"label":"amm","permalink":"/blog/tags/amm","allTagsPath":"/blog/tags","count":13}')}}]); \ No newline at end of file diff --git a/assets/js/db689dc0.30d08553.js b/assets/js/db689dc0.1b4a6204.js similarity index 90% rename from assets/js/db689dc0.30d08553.js rename to assets/js/db689dc0.1b4a6204.js index 2e5d8a7..7134e36 100644 --- a/assets/js/db689dc0.30d08553.js +++ b/assets/js/db689dc0.1b4a6204.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6247],{7781:function(e){e.exports=JSON.parse('{"label":"mit","permalink":"/blog/tags/mit","allTagsPath":"/blog/tags","count":24}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[6247],{7781:function(e){e.exports=JSON.parse('{"label":"mit","permalink":"/blog/tags/mit","allTagsPath":"/blog/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/dc94fc44.46ed13f4.js b/assets/js/dc94fc44.d125d79c.js similarity index 79% rename from assets/js/dc94fc44.46ed13f4.js rename to assets/js/dc94fc44.d125d79c.js index cefc39f..cbe6003 100644 --- a/assets/js/dc94fc44.46ed13f4.js +++ b/assets/js/dc94fc44.d125d79c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5541],{6472:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/hashgreen","page":1,"postsPerPage":10,"totalPages":3,"totalCount":24,"nextPage":"/blog/tags/hashgreen/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[5541],{6472:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/hashgreen","page":1,"postsPerPage":10,"totalPages":3,"totalCount":25,"nextPage":"/blog/tags/hashgreen/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/e1a07b9e.26eed6b4.js b/assets/js/e1a07b9e.be8377cb.js similarity index 80% rename from assets/js/e1a07b9e.26eed6b4.js rename to assets/js/e1a07b9e.be8377cb.js index cae2266..ae0bd54 100644 --- a/assets/js/e1a07b9e.26eed6b4.js +++ b/assets/js/e1a07b9e.be8377cb.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4335],{9700:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/blockchain/page/3","page":3,"postsPerPage":10,"totalPages":3,"totalCount":24,"previousPage":"/blog/tags/blockchain/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[4335],{9700:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/blockchain/page/3","page":3,"postsPerPage":10,"totalPages":3,"totalCount":25,"previousPage":"/blog/tags/blockchain/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/e26902a7.99f34e10.js b/assets/js/e26902a7.c13a2dda.js similarity index 80% rename from assets/js/e26902a7.99f34e10.js rename to assets/js/e26902a7.c13a2dda.js index a8e49ca..90ecad7 100644 --- a/assets/js/e26902a7.99f34e10.js +++ b/assets/js/e26902a7.c13a2dda.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1007],{7376:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/mit/page/2","page":2,"postsPerPage":10,"totalPages":3,"totalCount":24,"previousPage":"/blog/tags/mit","nextPage":"/blog/tags/mit/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[1007],{7376:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/mit/page/2","page":2,"postsPerPage":10,"totalPages":3,"totalCount":25,"previousPage":"/blog/tags/mit","nextPage":"/blog/tags/mit/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/e43ecc98.5c48f3eb.js b/assets/js/e43ecc98.89662b11.js similarity index 86% rename from assets/js/e43ecc98.5c48f3eb.js rename to assets/js/e43ecc98.89662b11.js index f37688b..aa862c8 100644 --- a/assets/js/e43ecc98.5c48f3eb.js +++ b/assets/js/e43ecc98.89662b11.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9869],{5985:function(e){e.exports=JSON.parse('{"label":"hashgreen","permalink":"/blog/tags/hashgreen","allTagsPath":"/blog/tags","count":24}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[9869],{5985:function(e){e.exports=JSON.parse('{"label":"hashgreen","permalink":"/blog/tags/hashgreen","allTagsPath":"/blog/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/e6b447b1.42b73ab7.js b/assets/js/e6b447b1.be2a6682.js similarity index 83% rename from assets/js/e6b447b1.42b73ab7.js rename to assets/js/e6b447b1.be2a6682.js index 82c5e51..9ce4458 100644 --- a/assets/js/e6b447b1.42b73ab7.js +++ b/assets/js/e6b447b1.be2a6682.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7939],{8720:function(e){e.exports=JSON.parse('{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap","allTagsPath":"/blog/tags","count":3}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[7939],{8720:function(e){e.exports=JSON.parse('{"label":"hashgreenswap","permalink":"/blog/tags/hashgreenswap","allTagsPath":"/blog/tags","count":4}')}}]); \ No newline at end of file diff --git a/assets/js/ed9151ec.9daddbe7.js b/assets/js/ed9151ec.8953d6e9.js similarity index 86% rename from assets/js/ed9151ec.9daddbe7.js rename to assets/js/ed9151ec.8953d6e9.js index dd9d686..a0bcbc4 100644 --- a/assets/js/ed9151ec.9daddbe7.js +++ b/assets/js/ed9151ec.8953d6e9.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8588],{9644:function(e){e.exports=JSON.parse('{"label":"hashgreen","permalink":"/blog/tags/hashgreen","allTagsPath":"/blog/tags","count":24}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[8588],{9644:function(e){e.exports=JSON.parse('{"label":"hashgreen","permalink":"/blog/tags/hashgreen","allTagsPath":"/blog/tags","count":25}')}}]); \ No newline at end of file diff --git a/assets/js/ee67255f.71b69e1e.js b/assets/js/ee67255f.1201093c.js similarity index 82% rename from assets/js/ee67255f.71b69e1e.js rename to assets/js/ee67255f.1201093c.js index 0eb9464..f68b9e1 100644 --- a/assets/js/ee67255f.71b69e1e.js +++ b/assets/js/ee67255f.1201093c.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[635],{712:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/cryptocurrency/page/2","page":2,"postsPerPage":10,"totalPages":3,"totalCount":24,"previousPage":"/blog/tags/cryptocurrency","nextPage":"/blog/tags/cryptocurrency/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[635],{712:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/cryptocurrency/page/2","page":2,"postsPerPage":10,"totalPages":3,"totalCount":25,"previousPage":"/blog/tags/cryptocurrency","nextPage":"/blog/tags/cryptocurrency/page/3","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/f6dace95.ad472687.js b/assets/js/f6dace95.0b0ae6c6.js similarity index 78% rename from assets/js/f6dace95.ad472687.js rename to assets/js/f6dace95.0b0ae6c6.js index d93d082..ed63800 100644 --- a/assets/js/f6dace95.ad472687.js +++ b/assets/js/f6dace95.0b0ae6c6.js @@ -1 +1 @@ -"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2414],{9444:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/mit","page":1,"postsPerPage":10,"totalPages":3,"totalCount":24,"nextPage":"/blog/tags/mit/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file +"use strict";(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[2414],{9444:function(e){e.exports=JSON.parse('{"permalink":"/blog/tags/mit","page":1,"postsPerPage":10,"totalPages":3,"totalCount":25,"nextPage":"/blog/tags/mit/page/2","blogDescription":"Blog","blogTitle":"Blog"}')}}]); \ No newline at end of file diff --git a/assets/js/main.77039af0.js b/assets/js/main.77039af0.js deleted file mode 100644 index d9c80e4..0000000 --- a/assets/js/main.77039af0.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! For license information please see main.77039af0.js.LICENSE.txt */ -(self.webpackChunkwebsite=self.webpackChunkwebsite||[]).push([[179],{4334:function(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;t=d.reach);_+=E.value.length,E=E.next){var x=E.value;if(t.length>e.length)return;if(!(x instanceof a)){var S,C=1;if(v){if(!(S=o(k,_,e,b))||S.index>=e.length)break;var T=S.index,L=S.index+S[0].length,A=_;for(A+=E.value.length;T>=A;)A+=(E=E.next).value.length;if(_=A-=E.value.length,E.value instanceof a)continue;for(var N=E;N!==t.tail&&(Ad.reach&&(d.reach=I);var M=E.prev;if(O&&(M=s(t,M,O),_+=O.length),c(t,M,C),E=s(t,M,new a(f,h?r.tokenize(P,h):P,y,P)),R&&s(t,E,R),C>1){var D={cause:f+","+g,reach:I};i(e,t,n,E.prev,_,D),d&&D.reach>d.reach&&(d.reach=D.reach)}}}}}}function l(){var e={value:null,prev:null,next:null},t={value:null,prev:e,next:null};e.next=t,this.head=e,this.tail=t,this.length=0}function s(e,t,n){var r=t.next,a={value:n,prev:t,next:r};return t.next=a,r.prev=a,e.length++,a}function c(e,t,n){for(var r=t.next,a=0;a"+o.content+""},r}(),r=n;n.default=n,r.languages.markup={comment:{pattern://,greedy:!0},prolog:{pattern:/<\?[\s\S]+?\?>/,greedy:!0},doctype:{pattern:/"'[\]]|"[^"]*"|'[^']*')+(?:\[(?:[^<"'\]]|"[^"]*"|'[^']*'|<(?!!--)|)*\]\s*)?>/i,greedy:!0,inside:{"internal-subset":{pattern:/(^[^\[]*\[)[\s\S]+(?=\]>$)/,lookbehind:!0,greedy:!0,inside:null},string:{pattern:/"[^"]*"|'[^']*'/,greedy:!0},punctuation:/^$|[[\]]/,"doctype-tag":/^DOCTYPE/i,name:/[^\s<>'"]+/}},cdata:{pattern://i,greedy:!0},tag:{pattern:/<\/?(?!\d)[^\s>\/=$<%]+(?:\s(?:\s*[^\s>\/=]+(?:\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))|(?=[\s/>])))+)?\s*\/?>/,greedy:!0,inside:{tag:{pattern:/^<\/?[^\s>\/]+/,inside:{punctuation:/^<\/?/,namespace:/^[^\s>\/:]+:/}},"special-attr":[],"attr-value":{pattern:/=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+)/,inside:{punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}},punctuation:/\/?>/,"attr-name":{pattern:/[^\s>\/]+/,inside:{namespace:/^[^\s>\/:]+:/}}}},entity:[{pattern:/&[\da-z]{1,8};/i,alias:"named-entity"},/&#x?[\da-f]{1,8};/i]},r.languages.markup.tag.inside["attr-value"].inside.entity=r.languages.markup.entity,r.languages.markup.doctype.inside["internal-subset"].inside=r.languages.markup,r.hooks.add("wrap",(function(e){"entity"===e.type&&(e.attributes.title=e.content.replace(/&/,"&"))})),Object.defineProperty(r.languages.markup.tag,"addInlined",{value:function(e,t){var n={};n["language-"+t]={pattern:/(^$)/i,lookbehind:!0,inside:r.languages[t]},n.cdata=/^$/i;var a={"included-cdata":{pattern://i,inside:n}};a["language-"+t]={pattern:/[\s\S]+/,inside:r.languages[t]};var o={};o[e]={pattern:RegExp(/(<__[^>]*>)(?:))*\]\]>|(?!)/.source.replace(/__/g,(function(){return e})),"i"),lookbehind:!0,greedy:!0,inside:a},r.languages.insertBefore("markup","cdata",o)}}),Object.defineProperty(r.languages.markup.tag,"addAttribute",{value:function(e,t){r.languages.markup.tag.inside["special-attr"].push({pattern:RegExp(/(^|["'\s])/.source+"(?:"+e+")"+/\s*=\s*(?:"[^"]*"|'[^']*'|[^\s'">=]+(?=[\s>]))/.source,"i"),lookbehind:!0,inside:{"attr-name":/^[^\s=]+/,"attr-value":{pattern:/=[\s\S]+/,inside:{value:{pattern:/(^=\s*(["']|(?!["'])))\S[\s\S]*(?=\2$)/,lookbehind:!0,alias:[t,"language-"+t],inside:r.languages[t]},punctuation:[{pattern:/^=/,alias:"attr-equals"},/"|'/]}}}})}}),r.languages.html=r.languages.markup,r.languages.mathml=r.languages.markup,r.languages.svg=r.languages.markup,r.languages.xml=r.languages.extend("markup",{}),r.languages.ssml=r.languages.xml,r.languages.atom=r.languages.xml,r.languages.rss=r.languages.xml,function(e){var t="\\b(?:BASH|BASHOPTS|BASH_ALIASES|BASH_ARGC|BASH_ARGV|BASH_CMDS|BASH_COMPLETION_COMPAT_DIR|BASH_LINENO|BASH_REMATCH|BASH_SOURCE|BASH_VERSINFO|BASH_VERSION|COLORTERM|COLUMNS|COMP_WORDBREAKS|DBUS_SESSION_BUS_ADDRESS|DEFAULTS_PATH|DESKTOP_SESSION|DIRSTACK|DISPLAY|EUID|GDMSESSION|GDM_LANG|GNOME_KEYRING_CONTROL|GNOME_KEYRING_PID|GPG_AGENT_INFO|GROUPS|HISTCONTROL|HISTFILE|HISTFILESIZE|HISTSIZE|HOME|HOSTNAME|HOSTTYPE|IFS|INSTANCE|JOB|LANG|LANGUAGE|LC_ADDRESS|LC_ALL|LC_IDENTIFICATION|LC_MEASUREMENT|LC_MONETARY|LC_NAME|LC_NUMERIC|LC_PAPER|LC_TELEPHONE|LC_TIME|LESSCLOSE|LESSOPEN|LINES|LOGNAME|LS_COLORS|MACHTYPE|MAILCHECK|MANDATORY_PATH|NO_AT_BRIDGE|OLDPWD|OPTERR|OPTIND|ORBIT_SOCKETDIR|OSTYPE|PAPERSIZE|PATH|PIPESTATUS|PPID|PS1|PS2|PS3|PS4|PWD|RANDOM|REPLY|SECONDS|SELINUX_INIT|SESSION|SESSIONTYPE|SESSION_MANAGER|SHELL|SHELLOPTS|SHLVL|SSH_AUTH_SOCK|TERM|UID|UPSTART_EVENTS|UPSTART_INSTANCE|UPSTART_JOB|UPSTART_SESSION|USER|WINDOWID|XAUTHORITY|XDG_CONFIG_DIRS|XDG_CURRENT_DESKTOP|XDG_DATA_DIRS|XDG_GREETER_DATA_DIR|XDG_MENU_PREFIX|XDG_RUNTIME_DIR|XDG_SEAT|XDG_SEAT_PATH|XDG_SESSION_DESKTOP|XDG_SESSION_ID|XDG_SESSION_PATH|XDG_SESSION_TYPE|XDG_VTNR|XMODIFIERS)\\b",n={pattern:/(^(["']?)\w+\2)[ \t]+\S.*/,lookbehind:!0,alias:"punctuation",inside:null},r={bash:n,environment:{pattern:RegExp("\\$"+t),alias:"constant"},variable:[{pattern:/\$?\(\([\s\S]+?\)\)/,greedy:!0,inside:{variable:[{pattern:/(^\$\(\([\s\S]+)\)\)/,lookbehind:!0},/^\$\(\(/],number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee]-?\d+)?/,operator:/--|\+\+|\*\*=?|<<=?|>>=?|&&|\|\||[=!+\-*/%<>^&|]=?|[?~:]/,punctuation:/\(\(?|\)\)?|,|;/}},{pattern:/\$\((?:\([^)]+\)|[^()])+\)|`[^`]+`/,greedy:!0,inside:{variable:/^\$\(|^`|\)$|`$/}},{pattern:/\$\{[^}]+\}/,greedy:!0,inside:{operator:/:[-=?+]?|[!\/]|##?|%%?|\^\^?|,,?/,punctuation:/[\[\]]/,environment:{pattern:RegExp("(\\{)"+t),lookbehind:!0,alias:"constant"}}},/\$(?:\w+|[#?*!@$])/],entity:/\\(?:[abceEfnrtv\\"]|O?[0-7]{1,3}|U[0-9a-fA-F]{8}|u[0-9a-fA-F]{4}|x[0-9a-fA-F]{1,2})/};e.languages.bash={shebang:{pattern:/^#!\s*\/.*/,alias:"important"},comment:{pattern:/(^|[^"{\\$])#.*/,lookbehind:!0},"function-name":[{pattern:/(\bfunction\s+)[\w-]+(?=(?:\s*\(?:\s*\))?\s*\{)/,lookbehind:!0,alias:"function"},{pattern:/\b[\w-]+(?=\s*\(\s*\)\s*\{)/,alias:"function"}],"for-or-select":{pattern:/(\b(?:for|select)\s+)\w+(?=\s+in\s)/,alias:"variable",lookbehind:!0},"assign-left":{pattern:/(^|[\s;|&]|[<>]\()\w+(?=\+?=)/,inside:{environment:{pattern:RegExp("(^|[\\s;|&]|[<>]\\()"+t),lookbehind:!0,alias:"constant"}},alias:"variable",lookbehind:!0},string:[{pattern:/((?:^|[^<])<<-?\s*)(\w+)\s[\s\S]*?(?:\r?\n|\r)\2/,lookbehind:!0,greedy:!0,inside:r},{pattern:/((?:^|[^<])<<-?\s*)(["'])(\w+)\2\s[\s\S]*?(?:\r?\n|\r)\3/,lookbehind:!0,greedy:!0,inside:{bash:n}},{pattern:/(^|[^\\](?:\\\\)*)"(?:\\[\s\S]|\$\([^)]+\)|\$(?!\()|`[^`]+`|[^"\\`$])*"/,lookbehind:!0,greedy:!0,inside:r},{pattern:/(^|[^$\\])'[^']*'/,lookbehind:!0,greedy:!0},{pattern:/\$'(?:[^'\\]|\\[\s\S])*'/,greedy:!0,inside:{entity:r.entity}}],environment:{pattern:RegExp("\\$?"+t),alias:"constant"},variable:r.variable,function:{pattern:/(^|[\s;|&]|[<>]\()(?:add|apropos|apt|apt-cache|apt-get|aptitude|aspell|automysqlbackup|awk|basename|bash|bc|bconsole|bg|bzip2|cal|cat|cfdisk|chgrp|chkconfig|chmod|chown|chroot|cksum|clear|cmp|column|comm|composer|cp|cron|crontab|csplit|curl|cut|date|dc|dd|ddrescue|debootstrap|df|diff|diff3|dig|dir|dircolors|dirname|dirs|dmesg|docker|docker-compose|du|egrep|eject|env|ethtool|expand|expect|expr|fdformat|fdisk|fg|fgrep|file|find|fmt|fold|format|free|fsck|ftp|fuser|gawk|git|gparted|grep|groupadd|groupdel|groupmod|groups|grub-mkconfig|gzip|halt|head|hg|history|host|hostname|htop|iconv|id|ifconfig|ifdown|ifup|import|install|ip|jobs|join|kill|killall|less|link|ln|locate|logname|logrotate|look|lpc|lpr|lprint|lprintd|lprintq|lprm|ls|lsof|lynx|make|man|mc|mdadm|mkconfig|mkdir|mke2fs|mkfifo|mkfs|mkisofs|mknod|mkswap|mmv|more|most|mount|mtools|mtr|mutt|mv|nano|nc|netstat|nice|nl|node|nohup|notify-send|npm|nslookup|op|open|parted|passwd|paste|pathchk|ping|pkill|pnpm|podman|podman-compose|popd|pr|printcap|printenv|ps|pushd|pv|quota|quotacheck|quotactl|ram|rar|rcp|reboot|remsync|rename|renice|rev|rm|rmdir|rpm|rsync|scp|screen|sdiff|sed|sendmail|seq|service|sftp|sh|shellcheck|shuf|shutdown|sleep|slocate|sort|split|ssh|stat|strace|su|sudo|sum|suspend|swapon|sync|tac|tail|tar|tee|time|timeout|top|touch|tr|traceroute|tsort|tty|umount|uname|unexpand|uniq|units|unrar|unshar|unzip|update-grub|uptime|useradd|userdel|usermod|users|uudecode|uuencode|v|vcpkg|vdir|vi|vim|virsh|vmstat|wait|watch|wc|wget|whereis|which|who|whoami|write|xargs|xdg-open|yarn|yes|zenity|zip|zsh|zypper)(?=$|[)\s;|&])/,lookbehind:!0},keyword:{pattern:/(^|[\s;|&]|[<>]\()(?:case|do|done|elif|else|esac|fi|for|function|if|in|select|then|until|while)(?=$|[)\s;|&])/,lookbehind:!0},builtin:{pattern:/(^|[\s;|&]|[<>]\()(?:\.|:|alias|bind|break|builtin|caller|cd|command|continue|declare|echo|enable|eval|exec|exit|export|getopts|hash|help|let|local|logout|mapfile|printf|pwd|read|readarray|readonly|return|set|shift|shopt|source|test|times|trap|type|typeset|ulimit|umask|unalias|unset)(?=$|[)\s;|&])/,lookbehind:!0,alias:"class-name"},boolean:{pattern:/(^|[\s;|&]|[<>]\()(?:false|true)(?=$|[)\s;|&])/,lookbehind:!0},"file-descriptor":{pattern:/\B&\d\b/,alias:"important"},operator:{pattern:/\d?<>|>\||\+=|=[=~]?|!=?|<<[<-]?|[&\d]?>>|\d[<>]&?|[<>][&=]?|&[>&]?|\|[&|]?/,inside:{"file-descriptor":{pattern:/^\d/,alias:"important"}}},punctuation:/\$?\(\(?|\)\)?|\.\.|[{}[\];\\]/,number:{pattern:/(^|\s)(?:[1-9]\d*|0)(?:[.,]\d+)?\b/,lookbehind:!0}},n.inside=e.languages.bash;for(var a=["comment","function-name","for-or-select","assign-left","string","environment","function","keyword","builtin","boolean","file-descriptor","operator","punctuation","number"],o=r.variable[1].inside,i=0;i]=?|[!=]=?=?|--?|\+\+?|&&?|\|\|?|[?*/~^%]/,punctuation:/[{}[\];(),.:]/},r.languages.c=r.languages.extend("clike",{comment:{pattern:/\/\/(?:[^\r\n\\]|\\(?:\r\n?|\n|(?![\r\n])))*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},"class-name":{pattern:/(\b(?:enum|struct)\s+(?:__attribute__\s*\(\([\s\S]*?\)\)\s*)?)\w+|\b[a-z]\w*_t\b/,lookbehind:!0},keyword:/\b(?:_Alignas|_Alignof|_Atomic|_Bool|_Complex|_Generic|_Imaginary|_Noreturn|_Static_assert|_Thread_local|__attribute__|asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|inline|int|long|register|return|short|signed|sizeof|static|struct|switch|typedef|typeof|union|unsigned|void|volatile|while)\b/,function:/\b[a-z_]\w*(?=\s*\()/i,number:/(?:\b0x(?:[\da-f]+(?:\.[\da-f]*)?|\.[\da-f]+)(?:p[+-]?\d+)?|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:e[+-]?\d+)?)[ful]{0,4}/i,operator:/>>=?|<<=?|->|([-+&|:])\1|[?:~]|[-+*/%&|^!=<>]=?/}),r.languages.insertBefore("c","string",{char:{pattern:/'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n]){0,32}'/,greedy:!0}}),r.languages.insertBefore("c","string",{macro:{pattern:/(^[\t ]*)#\s*[a-z](?:[^\r\n\\/]|\/(?!\*)|\/\*(?:[^*]|\*(?!\/))*\*\/|\\(?:\r\n|[\s\S]))*/im,lookbehind:!0,greedy:!0,alias:"property",inside:{string:[{pattern:/^(#\s*include\s*)<[^>]+>/,lookbehind:!0},r.languages.c.string],char:r.languages.c.char,comment:r.languages.c.comment,"macro-name":[{pattern:/(^#\s*define\s+)\w+\b(?!\()/i,lookbehind:!0},{pattern:/(^#\s*define\s+)\w+\b(?=\()/i,lookbehind:!0,alias:"function"}],directive:{pattern:/^(#\s*)[a-z]+/,lookbehind:!0,alias:"keyword"},"directive-hash":/^#/,punctuation:/##|\\(?=[\r\n])/,expression:{pattern:/\S[\s\S]*/,inside:r.languages.c}}}}),r.languages.insertBefore("c","function",{constant:/\b(?:EOF|NULL|SEEK_CUR|SEEK_END|SEEK_SET|__DATE__|__FILE__|__LINE__|__TIMESTAMP__|__TIME__|__func__|stderr|stdin|stdout)\b/}),delete r.languages.c.boolean,function(e){var t=/\b(?:alignas|alignof|asm|auto|bool|break|case|catch|char|char16_t|char32_t|char8_t|class|co_await|co_return|co_yield|compl|concept|const|const_cast|consteval|constexpr|constinit|continue|decltype|default|delete|do|double|dynamic_cast|else|enum|explicit|export|extern|final|float|for|friend|goto|if|import|inline|int|int16_t|int32_t|int64_t|int8_t|long|module|mutable|namespace|new|noexcept|nullptr|operator|override|private|protected|public|register|reinterpret_cast|requires|return|short|signed|sizeof|static|static_assert|static_cast|struct|switch|template|this|thread_local|throw|try|typedef|typeid|typename|uint16_t|uint32_t|uint64_t|uint8_t|union|unsigned|using|virtual|void|volatile|wchar_t|while)\b/,n=/\b(?!)\w+(?:\s*\.\s*\w+)*\b/.source.replace(//g,(function(){return t.source}));e.languages.cpp=e.languages.extend("c",{"class-name":[{pattern:RegExp(/(\b(?:class|concept|enum|struct|typename)\s+)(?!)\w+/.source.replace(//g,(function(){return t.source}))),lookbehind:!0},/\b[A-Z]\w*(?=\s*::\s*\w+\s*\()/,/\b[A-Z_]\w*(?=\s*::\s*~\w+\s*\()/i,/\b\w+(?=\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>\s*::\s*\w+\s*\()/],keyword:t,number:{pattern:/(?:\b0b[01']+|\b0x(?:[\da-f']+(?:\.[\da-f']*)?|\.[\da-f']+)(?:p[+-]?[\d']+)?|(?:\b[\d']+(?:\.[\d']*)?|\B\.[\d']+)(?:e[+-]?[\d']+)?)[ful]{0,4}/i,greedy:!0},operator:/>>=?|<<=?|->|--|\+\+|&&|\|\||[?:~]|<=>|[-+*/%&|^!=<>]=?|\b(?:and|and_eq|bitand|bitor|not|not_eq|or|or_eq|xor|xor_eq)\b/,boolean:/\b(?:false|true)\b/}),e.languages.insertBefore("cpp","string",{module:{pattern:RegExp(/(\b(?:import|module)\s+)/.source+"(?:"+/"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|<[^<>\r\n]*>/.source+"|"+/(?:\s*:\s*)?|:\s*/.source.replace(//g,(function(){return n}))+")"),lookbehind:!0,greedy:!0,inside:{string:/^[<"][\s\S]+/,operator:/:/,punctuation:/\./}},"raw-string":{pattern:/R"([^()\\ ]{0,16})\([\s\S]*?\)\1"/,alias:"string",greedy:!0}}),e.languages.insertBefore("cpp","keyword",{"generic-function":{pattern:/\b(?!operator\b)[a-z_]\w*\s*<(?:[^<>]|<[^<>]*>)*>(?=\s*\()/i,inside:{function:/^\w+/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:e.languages.cpp}}}}),e.languages.insertBefore("cpp","operator",{"double-colon":{pattern:/::/,alias:"punctuation"}}),e.languages.insertBefore("cpp","class-name",{"base-clause":{pattern:/(\b(?:class|struct)\s+\w+\s*:\s*)[^;{}"'\s]+(?:\s+[^;{}"'\s]+)*(?=\s*[;{])/,lookbehind:!0,greedy:!0,inside:e.languages.extend("cpp",{})}}),e.languages.insertBefore("inside","double-colon",{"class-name":/\b[a-z_]\w*\b(?!\s*::)/i},e.languages.cpp["base-clause"])}(r),function(e){var t=/(?:"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"|'(?:\\(?:\r\n|[\s\S])|[^'\\\r\n])*')/;e.languages.css={comment:/\/\*[\s\S]*?\*\//,atrule:{pattern:/@[\w-](?:[^;{\s]|\s+(?![\s{]))*(?:;|(?=\s*\{))/,inside:{rule:/^@[\w-]+/,"selector-function-argument":{pattern:/(\bselector\s*\(\s*(?![\s)]))(?:[^()\s]|\s+(?![\s)])|\((?:[^()]|\([^()]*\))*\))+(?=\s*\))/,lookbehind:!0,alias:"selector"},keyword:{pattern:/(^|[^\w-])(?:and|not|only|or)(?![\w-])/,lookbehind:!0}}},url:{pattern:RegExp("\\burl\\((?:"+t.source+"|"+/(?:[^\\\r\n()"']|\\[\s\S])*/.source+")\\)","i"),greedy:!0,inside:{function:/^url/i,punctuation:/^\(|\)$/,string:{pattern:RegExp("^"+t.source+"$"),alias:"url"}}},selector:{pattern:RegExp("(^|[{}\\s])[^{}\\s](?:[^{};\"'\\s]|\\s+(?![\\s{])|"+t.source+")*(?=\\s*\\{)"),lookbehind:!0},string:{pattern:t,greedy:!0},property:{pattern:/(^|[^-\w\xA0-\uFFFF])(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*(?=\s*:)/i,lookbehind:!0},important:/!important\b/i,function:{pattern:/(^|[^-a-z0-9])[-a-z0-9]+(?=\()/i,lookbehind:!0},punctuation:/[(){};:,]/},e.languages.css.atrule.inside.rest=e.languages.css;var n=e.languages.markup;n&&(n.tag.addInlined("style","css"),n.tag.addAttribute("style","css"))}(r),function(e){var t,n=/("|')(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/;e.languages.css.selector={pattern:e.languages.css.selector.pattern,lookbehind:!0,inside:t={"pseudo-element":/:(?:after|before|first-letter|first-line|selection)|::[-\w]+/,"pseudo-class":/:[-\w]+/,class:/\.[-\w]+/,id:/#[-\w]+/,attribute:{pattern:RegExp("\\[(?:[^[\\]\"']|"+n.source+")*\\]"),greedy:!0,inside:{punctuation:/^\[|\]$/,"case-sensitivity":{pattern:/(\s)[si]$/i,lookbehind:!0,alias:"keyword"},namespace:{pattern:/^(\s*)(?:(?!\s)[-*\w\xA0-\uFFFF])*\|(?!=)/,lookbehind:!0,inside:{punctuation:/\|$/}},"attr-name":{pattern:/^(\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+/,lookbehind:!0},"attr-value":[n,{pattern:/(=\s*)(?:(?!\s)[-\w\xA0-\uFFFF])+(?=\s*$)/,lookbehind:!0}],operator:/[|~*^$]?=/}},"n-th":[{pattern:/(\(\s*)[+-]?\d*[\dn](?:\s*[+-]\s*\d+)?(?=\s*\))/,lookbehind:!0,inside:{number:/[\dn]+/,operator:/[+-]/}},{pattern:/(\(\s*)(?:even|odd)(?=\s*\))/i,lookbehind:!0}],combinator:/>|\+|~|\|\|/,punctuation:/[(),]/}},e.languages.css.atrule.inside["selector-function-argument"].inside=t,e.languages.insertBefore("css","property",{variable:{pattern:/(^|[^-\w\xA0-\uFFFF])--(?!\s)[-_a-z\xA0-\uFFFF](?:(?!\s)[-\w\xA0-\uFFFF])*/i,lookbehind:!0}});var r={pattern:/(\b\d+)(?:%|[a-z]+(?![\w-]))/,lookbehind:!0},a={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0};e.languages.insertBefore("css","function",{operator:{pattern:/(\s)[+\-*\/](?=\s)/,lookbehind:!0},hexcode:{pattern:/\B#[\da-f]{3,8}\b/i,alias:"color"},color:[{pattern:/(^|[^\w-])(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)(?![\w-])/i,lookbehind:!0},{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:r,number:a,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:r,number:a})}(r),r.languages.javascript=r.languages.extend("clike",{"class-name":[r.languages.clike["class-name"],{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$A-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\.(?:constructor|prototype))/,lookbehind:!0}],keyword:[{pattern:/((?:^|\})\s*)catch\b/,lookbehind:!0},{pattern:/(^|[^.]|\.\.\.\s*)\b(?:as|assert(?=\s*\{)|async(?=\s*(?:function\b|\(|[$\w\xA0-\uFFFF]|$))|await|break|case|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally(?=\s*(?:\{|$))|for|from(?=\s*(?:['"]|$))|function|(?:get|set)(?=\s*(?:[#\[$\w\xA0-\uFFFF]|$))|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)\b/,lookbehind:!0}],function:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*(?:\.\s*(?:apply|bind|call)\s*)?\()/,number:{pattern:RegExp(/(^|[^\w$])/.source+"(?:"+/NaN|Infinity/.source+"|"+/0[bB][01]+(?:_[01]+)*n?/.source+"|"+/0[oO][0-7]+(?:_[0-7]+)*n?/.source+"|"+/0[xX][\dA-Fa-f]+(?:_[\dA-Fa-f]+)*n?/.source+"|"+/\d+(?:_\d+)*n/.source+"|"+/(?:\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\.\d+(?:_\d+)*)(?:[Ee][+-]?\d+(?:_\d+)*)?/.source+")"+/(?![\w$])/.source),lookbehind:!0},operator:/--|\+\+|\*\*=?|=>|&&=?|\|\|=?|[!=]==|<<=?|>>>?=?|[-+*/%&|^!=<>]=?|\.{3}|\?\?=?|\?\.?|[~:]/}),r.languages.javascript["class-name"][0].pattern=/(\b(?:class|extends|implements|instanceof|interface|new)\s+)[\w.\\]+/,r.languages.insertBefore("javascript","keyword",{regex:{pattern:/((?:^|[^$\w\xA0-\uFFFF."'\])\s]|\b(?:return|yield))\s*)\/(?:\[(?:[^\]\\\r\n]|\\.)*\]|\\.|[^/\\\[\r\n])+\/[dgimyus]{0,7}(?=(?:\s|\/\*(?:[^*]|\*(?!\/))*\*\/)*(?:$|[\r\n,.;:})\]]|\/\/))/,lookbehind:!0,greedy:!0,inside:{"regex-source":{pattern:/^(\/)[\s\S]+(?=\/[a-z]*$)/,lookbehind:!0,alias:"language-regex",inside:r.languages.regex},"regex-delimiter":/^\/|\/$/,"regex-flags":/^[a-z]+$/}},"function-variable":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*[=:]\s*(?:async\s*)?(?:\bfunction\b|(?:\((?:[^()]|\([^()]*\))*\)|(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)\s*=>))/,alias:"function"},parameter:[{pattern:/(function(?:\s+(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*)?\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\))/,lookbehind:!0,inside:r.languages.javascript},{pattern:/(^|[^$\w\xA0-\uFFFF])(?!\s)[_$a-z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*=>)/i,lookbehind:!0,inside:r.languages.javascript},{pattern:/(\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*=>)/,lookbehind:!0,inside:r.languages.javascript},{pattern:/((?:\b|\s|^)(?!(?:as|async|await|break|case|catch|class|const|continue|debugger|default|delete|do|else|enum|export|extends|finally|for|from|function|get|if|implements|import|in|instanceof|interface|let|new|null|of|package|private|protected|public|return|set|static|super|switch|this|throw|try|typeof|undefined|var|void|while|with|yield)(?![$\w\xA0-\uFFFF]))(?:(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*)\(\s*|\]\s*\(\s*)(?!\s)(?:[^()\s]|\s+(?![\s)])|\([^()]*\))+(?=\s*\)\s*\{)/,lookbehind:!0,inside:r.languages.javascript}],constant:/\b[A-Z](?:[A-Z_]|\dx?)*\b/}),r.languages.insertBefore("javascript","string",{hashbang:{pattern:/^#!.*/,greedy:!0,alias:"comment"},"template-string":{pattern:/`(?:\\[\s\S]|\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}|(?!\$\{)[^\\`])*`/,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},interpolation:{pattern:/((?:^|[^\\])(?:\\{2})*)\$\{(?:[^{}]|\{(?:[^{}]|\{[^}]*\})*\})+\}/,lookbehind:!0,inside:{"interpolation-punctuation":{pattern:/^\$\{|\}$/,alias:"punctuation"},rest:r.languages.javascript}},string:/[\s\S]+/}},"string-property":{pattern:/((?:^|[,{])[ \t]*)(["'])(?:\\(?:\r\n|[\s\S])|(?!\2)[^\\\r\n])*\2(?=\s*:)/m,lookbehind:!0,greedy:!0,alias:"property"}}),r.languages.insertBefore("javascript","operator",{"literal-property":{pattern:/((?:^|[,{])[ \t]*)(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*(?=\s*:)/m,lookbehind:!0,alias:"property"}}),r.languages.markup&&(r.languages.markup.tag.addInlined("script","javascript"),r.languages.markup.tag.addAttribute(/on(?:abort|blur|change|click|composition(?:end|start|update)|dblclick|error|focus(?:in|out)?|key(?:down|up)|load|mouse(?:down|enter|leave|move|out|over|up)|reset|resize|scroll|select|slotchange|submit|unload|wheel)/.source,"javascript")),r.languages.js=r.languages.javascript,function(e){var t=/#(?!\{).+/,n={pattern:/#\{[^}]+\}/,alias:"variable"};e.languages.coffeescript=e.languages.extend("javascript",{comment:t,string:[{pattern:/'(?:\\[\s\S]|[^\\'])*'/,greedy:!0},{pattern:/"(?:\\[\s\S]|[^\\"])*"/,greedy:!0,inside:{interpolation:n}}],keyword:/\b(?:and|break|by|catch|class|continue|debugger|delete|do|each|else|extend|extends|false|finally|for|if|in|instanceof|is|isnt|let|loop|namespace|new|no|not|null|of|off|on|or|own|return|super|switch|then|this|throw|true|try|typeof|undefined|unless|until|when|while|window|with|yes|yield)\b/,"class-member":{pattern:/@(?!\d)\w+/,alias:"variable"}}),e.languages.insertBefore("coffeescript","comment",{"multiline-comment":{pattern:/###[\s\S]+?###/,alias:"comment"},"block-regex":{pattern:/\/{3}[\s\S]*?\/{3}/,alias:"regex",inside:{comment:t,interpolation:n}}}),e.languages.insertBefore("coffeescript","string",{"inline-javascript":{pattern:/`(?:\\[\s\S]|[^\\`])*`/,inside:{delimiter:{pattern:/^`|`$/,alias:"punctuation"},script:{pattern:/[\s\S]+/,alias:"language-javascript",inside:e.languages.javascript}}},"multiline-string":[{pattern:/'''[\s\S]*?'''/,greedy:!0,alias:"string"},{pattern:/"""[\s\S]*?"""/,greedy:!0,alias:"string",inside:{interpolation:n}}]}),e.languages.insertBefore("coffeescript","keyword",{property:/(?!\d)\w+(?=\s*:(?!:))/}),delete e.languages.coffeescript["template-string"],e.languages.coffee=e.languages.coffeescript}(r),function(e){var t=/[*&][^\s[\]{},]+/,n=/!(?:<[\w\-%#;/?:@&=+$,.!~*'()[\]]+>|(?:[a-zA-Z\d-]*!)?[\w\-%#;/?:@&=+$.~*'()]+)?/,r="(?:"+n.source+"(?:[ \t]+"+t.source+")?|"+t.source+"(?:[ \t]+"+n.source+")?)",a=/(?:[^\s\x00-\x08\x0e-\x1f!"#%&'*,\-:>?@[\]`{|}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]|[?:-])(?:[ \t]*(?:(?![#:])|:))*/.source.replace(//g,(function(){return/[^\s\x00-\x08\x0e-\x1f,[\]{}\x7f-\x84\x86-\x9f\ud800-\udfff\ufffe\uffff]/.source})),o=/"(?:[^"\\\r\n]|\\.)*"|'(?:[^'\\\r\n]|\\.)*'/.source;function i(e,t){t=(t||"").replace(/m/g,"")+"m";var n=/([:\-,[{]\s*(?:\s<>[ \t]+)?)(?:<>)(?=[ \t]*(?:$|,|\]|\}|(?:[\r\n]\s*)?#))/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return e}));return RegExp(n,t)}e.languages.yaml={scalar:{pattern:RegExp(/([\-:]\s*(?:\s<>[ \t]+)?[|>])[ \t]*(?:((?:\r?\n|\r)[ \t]+)\S[^\r\n]*(?:\2[^\r\n]+)*)/.source.replace(/<>/g,(function(){return r}))),lookbehind:!0,alias:"string"},comment:/#.*/,key:{pattern:RegExp(/((?:^|[:\-,[{\r\n?])[ \t]*(?:<>[ \t]+)?)<>(?=\s*:\s)/.source.replace(/<>/g,(function(){return r})).replace(/<>/g,(function(){return"(?:"+a+"|"+o+")"}))),lookbehind:!0,greedy:!0,alias:"atrule"},directive:{pattern:/(^[ \t]*)%.+/m,lookbehind:!0,alias:"important"},datetime:{pattern:i(/\d{4}-\d\d?-\d\d?(?:[tT]|[ \t]+)\d\d?:\d{2}:\d{2}(?:\.\d*)?(?:[ \t]*(?:Z|[-+]\d\d?(?::\d{2})?))?|\d{4}-\d{2}-\d{2}|\d\d?:\d{2}(?::\d{2}(?:\.\d*)?)?/.source),lookbehind:!0,alias:"number"},boolean:{pattern:i(/false|true/.source,"i"),lookbehind:!0,alias:"important"},null:{pattern:i(/null|~/.source,"i"),lookbehind:!0,alias:"important"},string:{pattern:i(o),lookbehind:!0,greedy:!0},number:{pattern:i(/[+-]?(?:0x[\da-f]+|0o[0-7]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?|\.inf|\.nan)/.source,"i"),lookbehind:!0},tag:n,important:t,punctuation:/---|[:[\]{}\-,|>?]|\.\.\./},e.languages.yml=e.languages.yaml}(r),function(e){var t=/(?:\\.|[^\\\n\r]|(?:\n|\r\n?)(?![\r\n]))/.source;function n(e){return e=e.replace(//g,(function(){return t})),RegExp(/((?:^|[^\\])(?:\\{2})*)/.source+"(?:"+e+")")}var r=/(?:\\.|``(?:[^`\r\n]|`(?!`))+``|`[^`\r\n]+`|[^\\|\r\n`])+/.source,a=/\|?__(?:\|__)+\|?(?:(?:\n|\r\n?)|(?![\s\S]))/.source.replace(/__/g,(function(){return r})),o=/\|?[ \t]*:?-{3,}:?[ \t]*(?:\|[ \t]*:?-{3,}:?[ \t]*)+\|?(?:\n|\r\n?)/.source;e.languages.markdown=e.languages.extend("markup",{}),e.languages.insertBefore("markdown","prolog",{"front-matter-block":{pattern:/(^(?:\s*[\r\n])?)---(?!.)[\s\S]*?[\r\n]---(?!.)/,lookbehind:!0,greedy:!0,inside:{punctuation:/^---|---$/,"front-matter":{pattern:/\S+(?:\s+\S+)*/,alias:["yaml","language-yaml"],inside:e.languages.yaml}}},blockquote:{pattern:/^>(?:[\t ]*>)*/m,alias:"punctuation"},table:{pattern:RegExp("^"+a+o+"(?:"+a+")*","m"),inside:{"table-data-rows":{pattern:RegExp("^("+a+o+")(?:"+a+")*$"),lookbehind:!0,inside:{"table-data":{pattern:RegExp(r),inside:e.languages.markdown},punctuation:/\|/}},"table-line":{pattern:RegExp("^("+a+")"+o+"$"),lookbehind:!0,inside:{punctuation:/\||:?-{3,}:?/}},"table-header-row":{pattern:RegExp("^"+a+"$"),inside:{"table-header":{pattern:RegExp(r),alias:"important",inside:e.languages.markdown},punctuation:/\|/}}}},code:[{pattern:/((?:^|\n)[ \t]*\n|(?:^|\r\n?)[ \t]*\r\n?)(?: {4}|\t).+(?:(?:\n|\r\n?)(?: {4}|\t).+)*/,lookbehind:!0,alias:"keyword"},{pattern:/^```[\s\S]*?^```$/m,greedy:!0,inside:{"code-block":{pattern:/^(```.*(?:\n|\r\n?))[\s\S]+?(?=(?:\n|\r\n?)^```$)/m,lookbehind:!0},"code-language":{pattern:/^(```).+/,lookbehind:!0},punctuation:/```/}}],title:[{pattern:/\S.*(?:\n|\r\n?)(?:==+|--+)(?=[ \t]*$)/m,alias:"important",inside:{punctuation:/==+$|--+$/}},{pattern:/(^\s*)#.+/m,lookbehind:!0,alias:"important",inside:{punctuation:/^#+|#+$/}}],hr:{pattern:/(^\s*)([*-])(?:[\t ]*\2){2,}(?=\s*$)/m,lookbehind:!0,alias:"punctuation"},list:{pattern:/(^\s*)(?:[*+-]|\d+\.)(?=[\t ].)/m,lookbehind:!0,alias:"punctuation"},"url-reference":{pattern:/!?\[[^\]]+\]:[\t ]+(?:\S+|<(?:\\.|[^>\\])+>)(?:[\t ]+(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\)))?/,inside:{variable:{pattern:/^(!?\[)[^\]]+/,lookbehind:!0},string:/(?:"(?:\\.|[^"\\])*"|'(?:\\.|[^'\\])*'|\((?:\\.|[^)\\])*\))$/,punctuation:/^[\[\]!:]|[<>]/},alias:"url"},bold:{pattern:n(/\b__(?:(?!_)|_(?:(?!_))+_)+__\b|\*\*(?:(?!\*)|\*(?:(?!\*))+\*)+\*\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^..)[\s\S]+(?=..$)/,lookbehind:!0,inside:{}},punctuation:/\*\*|__/}},italic:{pattern:n(/\b_(?:(?!_)|__(?:(?!_))+__)+_\b|\*(?:(?!\*)|\*\*(?:(?!\*))+\*\*)+\*/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^.)[\s\S]+(?=.$)/,lookbehind:!0,inside:{}},punctuation:/[*_]/}},strike:{pattern:n(/(~~?)(?:(?!~))+\2/.source),lookbehind:!0,greedy:!0,inside:{content:{pattern:/(^~~?)[\s\S]+(?=\1$)/,lookbehind:!0,inside:{}},punctuation:/~~?/}},"code-snippet":{pattern:/(^|[^\\`])(?:``[^`\r\n]+(?:`[^`\r\n]+)*``(?!`)|`[^`\r\n]+`(?!`))/,lookbehind:!0,greedy:!0,alias:["code","keyword"]},url:{pattern:n(/!?\[(?:(?!\]))+\](?:\([^\s)]+(?:[\t ]+"(?:\\.|[^"\\])*")?\)|[ \t]?\[(?:(?!\]))+\])/.source),lookbehind:!0,greedy:!0,inside:{operator:/^!/,content:{pattern:/(^\[)[^\]]+(?=\])/,lookbehind:!0,inside:{}},variable:{pattern:/(^\][ \t]?\[)[^\]]+(?=\]$)/,lookbehind:!0},url:{pattern:/(^\]\()[^\s)]+/,lookbehind:!0},string:{pattern:/(^[ \t]+)"(?:\\.|[^"\\])*"(?=\)$)/,lookbehind:!0}}}}),["url","bold","italic","strike"].forEach((function(t){["url","bold","italic","strike","code-snippet"].forEach((function(n){t!==n&&(e.languages.markdown[t].inside.content.inside[n]=e.languages.markdown[n])}))})),e.hooks.add("after-tokenize",(function(e){"markdown"!==e.language&&"md"!==e.language||function e(t){if(t&&"string"!=typeof t)for(var n=0,r=t.length;n",quot:'"'},s=String.fromCodePoint||String.fromCharCode;e.languages.md=e.languages.markdown}(r),r.languages.graphql={comment:/#.*/,description:{pattern:/(?:"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*")(?=\s*[a-z_])/i,greedy:!0,alias:"string",inside:{"language-markdown":{pattern:/(^"(?:"")?)(?!\1)[\s\S]+(?=\1$)/,lookbehind:!0,inside:r.languages.markdown}}},string:{pattern:/"""(?:[^"]|(?!""")")*"""|"(?:\\.|[^\\"\r\n])*"/,greedy:!0},number:/(?:\B-|\b)\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,boolean:/\b(?:false|true)\b/,variable:/\$[a-z_]\w*/i,directive:{pattern:/@[a-z_]\w*/i,alias:"function"},"attr-name":{pattern:/\b[a-z_]\w*(?=\s*(?:\((?:[^()"]|"(?:\\.|[^\\"\r\n])*")*\))?:)/i,greedy:!0},"atom-input":{pattern:/\b[A-Z]\w*Input\b/,alias:"class-name"},scalar:/\b(?:Boolean|Float|ID|Int|String)\b/,constant:/\b[A-Z][A-Z_\d]*\b/,"class-name":{pattern:/(\b(?:enum|implements|interface|on|scalar|type|union)\s+|&\s*|:\s*|\[)[A-Z_]\w*/,lookbehind:!0},fragment:{pattern:/(\bfragment\s+|\.{3}\s*(?!on\b))[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-mutation":{pattern:/(\bmutation\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},"definition-query":{pattern:/(\bquery\s+)[a-zA-Z_]\w*/,lookbehind:!0,alias:"function"},keyword:/\b(?:directive|enum|extend|fragment|implements|input|interface|mutation|on|query|repeatable|scalar|schema|subscription|type|union)\b/,operator:/[!=|&]|\.{3}/,"property-query":/\w+(?=\s*\()/,object:/\w+(?=\s*\{)/,punctuation:/[!(){}\[\]:=,]/,property:/\w+/},r.hooks.add("after-tokenize",(function(e){if("graphql"===e.language)for(var t=e.tokens.filter((function(e){return"string"!=typeof e&&"comment"!==e.type&&"scalar"!==e.type})),n=0;n0)){var l=f(/^\{$/,/^\}$/);if(-1===l)continue;for(var s=n;s=0&&p(c,"variable-input")}}}}function u(e){return t[n+e]}function d(e,t){t=t||0;for(var n=0;n?|<|>)?|>[>=]?|\b(?:AND|BETWEEN|DIV|ILIKE|IN|IS|LIKE|NOT|OR|REGEXP|RLIKE|SOUNDS LIKE|XOR)\b/i,punctuation:/[;[\]()`,.]/},function(e){var t=e.languages.javascript["template-string"],n=t.pattern.source,r=t.inside.interpolation,a=r.inside["interpolation-punctuation"],o=r.pattern.source;function i(t,r){if(e.languages[t])return{pattern:RegExp("((?:"+r+")\\s*)"+n),lookbehind:!0,greedy:!0,inside:{"template-punctuation":{pattern:/^`|`$/,alias:"string"},"embedded-code":{pattern:/[\s\S]+/,alias:t}}}}function l(e,t){return"___"+t.toUpperCase()+"_"+e+"___"}function s(t,n,r){var a={code:t,grammar:n,language:r};return e.hooks.run("before-tokenize",a),a.tokens=e.tokenize(a.code,a.grammar),e.hooks.run("after-tokenize",a),a.tokens}function c(t){var n={};n["interpolation-punctuation"]=a;var o=e.tokenize(t,n);if(3===o.length){var i=[1,1];i.push.apply(i,s(o[1],e.languages.javascript,"javascript")),o.splice.apply(o,i)}return new e.Token("interpolation",o,r.alias,t)}function u(t,n,r){var a=e.tokenize(t,{interpolation:{pattern:RegExp(o),lookbehind:!0}}),i=0,u={},d=s(a.map((function(e){if("string"==typeof e)return e;for(var n,a=e.content;-1!==t.indexOf(n=l(i++,r)););return u[n]=a,n})).join(""),n,r),f=Object.keys(u);return i=0,function e(t){for(var n=0;n=f.length)return;var r=t[n];if("string"==typeof r||"string"==typeof r.content){var a=f[i],o="string"==typeof r?r:r.content,l=o.indexOf(a);if(-1!==l){++i;var s=o.substring(0,l),d=c(u[a]),p=o.substring(l+a.length),g=[];if(s&&g.push(s),g.push(d),p){var m=[p];e(m),g.push.apply(g,m)}"string"==typeof r?(t.splice.apply(t,[n,1].concat(g)),n+=g.length-1):r.content=g}}else{var h=r.content;Array.isArray(h)?e(h):e([h])}}}(d),new e.Token(r,d,"language-"+r,t)}e.languages.javascript["template-string"]=[i("css",/\b(?:styled(?:\([^)]*\))?(?:\s*\.\s*\w+(?:\([^)]*\))*)*|css(?:\s*\.\s*(?:global|resolve))?|createGlobalStyle|keyframes)/.source),i("html",/\bhtml|\.\s*(?:inner|outer)HTML\s*\+?=/.source),i("svg",/\bsvg/.source),i("markdown",/\b(?:markdown|md)/.source),i("graphql",/\b(?:gql|graphql(?:\s*\.\s*experimental)?)/.source),i("sql",/\bsql/.source),t].filter(Boolean);var d={javascript:!0,js:!0,typescript:!0,ts:!0,jsx:!0,tsx:!0};function f(e){return"string"==typeof e?e:Array.isArray(e)?e.map(f).join(""):f(e.content)}e.hooks.add("after-tokenize",(function(t){t.language in d&&function t(n){for(var r=0,a=n.length;r]|<(?:[^<>]|<[^<>]*>)*>)*>)?/,lookbehind:!0,greedy:!0,inside:null},builtin:/\b(?:Array|Function|Promise|any|boolean|console|never|number|string|symbol|unknown)\b/}),e.languages.typescript.keyword.push(/\b(?:abstract|declare|is|keyof|readonly|require)\b/,/\b(?:asserts|infer|interface|module|namespace|type)\b(?=\s*(?:[{_$a-zA-Z\xA0-\uFFFF]|$))/,/\btype\b(?=\s*(?:[\{*]|$))/),delete e.languages.typescript.parameter,delete e.languages.typescript["literal-property"];var t=e.languages.extend("typescript",{});delete t["class-name"],e.languages.typescript["class-name"].inside=t,e.languages.insertBefore("typescript","function",{decorator:{pattern:/@[$\w\xA0-\uFFFF]+/,inside:{at:{pattern:/^@/,alias:"operator"},function:/^[\s\S]+/}},"generic-function":{pattern:/#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*\s*<(?:[^<>]|<(?:[^<>]|<[^<>]*>)*>)*>(?=\s*\()/,greedy:!0,inside:{function:/^#?(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/,generic:{pattern:/<[\s\S]+/,alias:"class-name",inside:t}}}}),e.languages.ts=e.languages.typescript}(r),function(e){function t(e,t){return RegExp(e.replace(//g,(function(){return/(?!\s)[_$a-zA-Z\xA0-\uFFFF](?:(?!\s)[$\w\xA0-\uFFFF])*/.source})),t)}e.languages.insertBefore("javascript","function-variable",{"method-variable":{pattern:RegExp("(\\.\\s*)"+e.languages.javascript["function-variable"].pattern.source),lookbehind:!0,alias:["function-variable","method","function","property-access"]}}),e.languages.insertBefore("javascript","function",{method:{pattern:RegExp("(\\.\\s*)"+e.languages.javascript.function.source),lookbehind:!0,alias:["function","property-access"]}}),e.languages.insertBefore("javascript","constant",{"known-class-name":[{pattern:/\b(?:(?:Float(?:32|64)|(?:Int|Uint)(?:8|16|32)|Uint8Clamped)?Array|ArrayBuffer|BigInt|Boolean|DataView|Date|Error|Function|Intl|JSON|(?:Weak)?(?:Map|Set)|Math|Number|Object|Promise|Proxy|Reflect|RegExp|String|Symbol|WebAssembly)\b/,alias:"class-name"},{pattern:/\b(?:[A-Z]\w*)Error\b/,alias:"class-name"}]}),e.languages.insertBefore("javascript","keyword",{imports:{pattern:t(/(\bimport\b\s*)(?:(?:\s*,\s*(?:\*\s*as\s+|\{[^{}]*\}))?|\*\s*as\s+|\{[^{}]*\})(?=\s*\bfrom\b)/.source),lookbehind:!0,inside:e.languages.javascript},exports:{pattern:t(/(\bexport\b\s*)(?:\*(?:\s*as\s+)?(?=\s*\bfrom\b)|\{[^{}]*\})/.source),lookbehind:!0,inside:e.languages.javascript}}),e.languages.javascript.keyword.unshift({pattern:/\b(?:as|default|export|from|import)\b/,alias:"module"},{pattern:/\b(?:await|break|catch|continue|do|else|finally|for|if|return|switch|throw|try|while|yield)\b/,alias:"control-flow"},{pattern:/\bnull\b/,alias:["null","nil"]},{pattern:/\bundefined\b/,alias:"nil"}),e.languages.insertBefore("javascript","operator",{spread:{pattern:/\.{3}/,alias:"operator"},arrow:{pattern:/=>/,alias:"operator"}}),e.languages.insertBefore("javascript","punctuation",{"property-access":{pattern:t(/(\.\s*)#?/.source),lookbehind:!0},"maybe-class-name":{pattern:/(^|[^$\w\xA0-\uFFFF])[A-Z][$\w\xA0-\uFFFF]+/,lookbehind:!0},dom:{pattern:/\b(?:document|(?:local|session)Storage|location|navigator|performance|window)\b/,alias:"variable"},console:{pattern:/\bconsole(?=\s*\.)/,alias:"class-name"}});for(var n=["function","function-variable","method","method-variable","property-access"],r=0;r*\.{3}(?:[^{}]|)*\})/.source;function o(e,t){return e=e.replace(//g,(function(){return n})).replace(//g,(function(){return r})).replace(//g,(function(){return a})),RegExp(e,t)}a=o(a).source,e.languages.jsx=e.languages.extend("markup",t),e.languages.jsx.tag.pattern=o(/<\/?(?:[\w.:-]+(?:+(?:[\w.:$-]+(?:=(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s{'"/>=]+|))?|))**\/?)?>/.source),e.languages.jsx.tag.inside.tag.pattern=/^<\/?[^\s>\/]*/,e.languages.jsx.tag.inside["attr-value"].pattern=/=(?!\{)(?:"(?:\\[\s\S]|[^\\"])*"|'(?:\\[\s\S]|[^\\'])*'|[^\s'">]+)/,e.languages.jsx.tag.inside.tag.inside["class-name"]=/^[A-Z]\w*(?:\.[A-Z]\w*)*$/,e.languages.jsx.tag.inside.comment=t.comment,e.languages.insertBefore("inside","attr-name",{spread:{pattern:o(//.source),inside:e.languages.jsx}},e.languages.jsx.tag),e.languages.insertBefore("inside","special-attr",{script:{pattern:o(/=/.source),alias:"language-javascript",inside:{"script-punctuation":{pattern:/^=(?=\{)/,alias:"punctuation"},rest:e.languages.jsx}}},e.languages.jsx.tag);var i=function(e){return e?"string"==typeof e?e:"string"==typeof e.content?e.content:e.content.map(i).join(""):""},l=function(t){for(var n=[],r=0;r0&&n[n.length-1].tagName===i(a.content[0].content[1])&&n.pop():"/>"===a.content[a.content.length-1].content||n.push({tagName:i(a.content[0].content[1]),openedBraces:0}):n.length>0&&"punctuation"===a.type&&"{"===a.content?n[n.length-1].openedBraces++:n.length>0&&n[n.length-1].openedBraces>0&&"punctuation"===a.type&&"}"===a.content?n[n.length-1].openedBraces--:o=!0),(o||"string"==typeof a)&&n.length>0&&0===n[n.length-1].openedBraces){var s=i(a);r0&&("string"==typeof t[r-1]||"plain-text"===t[r-1].type)&&(s=i(t[r-1])+s,t.splice(r-1,1),r--),t[r]=new e.Token("plain-text",s,null,s)}a.content&&"string"!=typeof a.content&&l(a.content)}};e.hooks.add("after-tokenize",(function(e){"jsx"!==e.language&&"tsx"!==e.language||l(e.tokens)}))}(r),function(e){e.languages.diff={coord:[/^(?:\*{3}|-{3}|\+{3}).*$/m,/^@@.*@@$/m,/^\d.*$/m]};var t={"deleted-sign":"-","deleted-arrow":"<","inserted-sign":"+","inserted-arrow":">",unchanged:" ",diff:"!"};Object.keys(t).forEach((function(n){var r=t[n],a=[];/^\w+$/.test(n)||a.push(/\w+/.exec(n)[0]),"diff"===n&&a.push("bold"),e.languages.diff[n]={pattern:RegExp("^(?:["+r+"].*(?:\r\n?|\n|(?![\\s\\S])))+","m"),alias:a,inside:{line:{pattern:/(.)(?=[\s\S]).*(?:\r\n?|\n)?/,lookbehind:!0},prefix:{pattern:/[\s\S]/,alias:/\w+/.exec(n)[0]}}}})),Object.defineProperty(e.languages.diff,"PREFIXES",{value:t})}(r),r.languages.git={comment:/^#.*/m,deleted:/^[-\u2013].*/m,inserted:/^\+.*/m,string:/("|')(?:\\.|(?!\1)[^\\\r\n])*\1/,command:{pattern:/^.*\$ git .*$/m,inside:{parameter:/\s--?\w+/}},coord:/^@@.*@@$/m,"commit-sha1":/^commit \w{40}$/m},r.languages.go=r.languages.extend("clike",{string:{pattern:/(^|[^\\])"(?:\\.|[^"\\\r\n])*"|`[^`]*`/,lookbehind:!0,greedy:!0},keyword:/\b(?:break|case|chan|const|continue|default|defer|else|fallthrough|for|func|go(?:to)?|if|import|interface|map|package|range|return|select|struct|switch|type|var)\b/,boolean:/\b(?:_|false|iota|nil|true)\b/,number:[/\b0(?:b[01_]+|o[0-7_]+)i?\b/i,/\b0x(?:[a-f\d_]+(?:\.[a-f\d_]*)?|\.[a-f\d_]+)(?:p[+-]?\d+(?:_\d+)*)?i?(?!\w)/i,/(?:\b\d[\d_]*(?:\.[\d_]*)?|\B\.\d[\d_]*)(?:e[+-]?[\d_]+)?i?(?!\w)/i],operator:/[*\/%^!=]=?|\+[=+]?|-[=-]?|\|[=|]?|&(?:=|&|\^=?)?|>(?:>=?|=)?|<(?:<=?|=|-)?|:=|\.\.\./,builtin:/\b(?:append|bool|byte|cap|close|complex|complex(?:64|128)|copy|delete|error|float(?:32|64)|u?int(?:8|16|32|64)?|imag|len|make|new|panic|print(?:ln)?|real|recover|rune|string|uintptr)\b/}),r.languages.insertBefore("go","string",{char:{pattern:/'(?:\\.|[^'\\\r\n]){0,10}'/,greedy:!0}}),delete r.languages.go["class-name"],function(e){function t(e,t){return"___"+e.toUpperCase()+t+"___"}Object.defineProperties(e.languages["markup-templating"]={},{buildPlaceholders:{value:function(n,r,a,o){if(n.language===r){var i=n.tokenStack=[];n.code=n.code.replace(a,(function(e){if("function"==typeof o&&!o(e))return e;for(var a,l=i.length;-1!==n.code.indexOf(a=t(r,l));)++l;return i[l]=e,a})),n.grammar=e.languages.markup}}},tokenizePlaceholders:{value:function(n,r){if(n.language===r&&n.tokenStack){n.grammar=e.languages[r];var a=0,o=Object.keys(n.tokenStack);!function i(l){for(var s=0;s=o.length);s++){var c=l[s];if("string"==typeof c||c.content&&"string"==typeof c.content){var u=o[a],d=n.tokenStack[u],f="string"==typeof c?c:c.content,p=t(r,u),g=f.indexOf(p);if(g>-1){++a;var m=f.substring(0,g),h=new e.Token(r,e.tokenize(d,n.grammar),"language-"+r,d),b=f.substring(g+p.length),v=[];m&&v.push.apply(v,i([m])),v.push(h),b&&v.push.apply(v,i([b])),"string"==typeof c?l.splice.apply(l,[s,1].concat(v)):c.content=v}}else c.content&&i(c.content)}return l}(n.tokens)}}}})}(r),function(e){e.languages.handlebars={comment:/\{\{![\s\S]*?\}\}/,delimiter:{pattern:/^\{\{\{?|\}\}\}?$/,alias:"punctuation"},string:/(["'])(?:\\.|(?!\1)[^\\\r\n])*\1/,number:/\b0x[\dA-Fa-f]+\b|(?:\b\d+(?:\.\d*)?|\B\.\d+)(?:[Ee][+-]?\d+)?/,boolean:/\b(?:false|true)\b/,block:{pattern:/^(\s*(?:~\s*)?)[#\/]\S+?(?=\s*(?:~\s*)?$|\s)/,lookbehind:!0,alias:"keyword"},brackets:{pattern:/\[[^\]]+\]/,inside:{punctuation:/\[|\]/,variable:/[\s\S]+/}},punctuation:/[!"#%&':()*+,.\/;<=>@\[\\\]^`{|}~]/,variable:/[^!"#%&'()*+,\/;<=>@\[\\\]^`{|}~\s]+/},e.hooks.add("before-tokenize",(function(t){e.languages["markup-templating"].buildPlaceholders(t,"handlebars",/\{\{\{[\s\S]+?\}\}\}|\{\{[\s\S]+?\}\}/g)})),e.hooks.add("after-tokenize",(function(t){e.languages["markup-templating"].tokenizePlaceholders(t,"handlebars")})),e.languages.hbs=e.languages.handlebars}(r),r.languages.json={property:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,lookbehind:!0,greedy:!0},string:{pattern:/(^|[^\\])"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,lookbehind:!0,greedy:!0},comment:{pattern:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,greedy:!0},number:/-?\b\d+(?:\.\d+)?(?:e[+-]?\d+)?\b/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},r.languages.webmanifest=r.languages.json,r.languages.less=r.languages.extend("css",{comment:[/\/\*[\s\S]*?\*\//,{pattern:/(^|[^\\])\/\/.*/,lookbehind:!0}],atrule:{pattern:/@[\w-](?:\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{punctuation:/[:()]/}},selector:{pattern:/(?:@\{[\w-]+\}|[^{};\s@])(?:@\{[\w-]+\}|\((?:[^(){}]|\([^(){}]*\))*\)|[^(){};@\s]|\s+(?!\s))*?(?=\s*\{)/,inside:{variable:/@+[\w-]+/}},property:/(?:@\{[\w-]+\}|[\w-])+(?:\+_?)?(?=\s*:)/,operator:/[+\-*\/]/}),r.languages.insertBefore("less","property",{variable:[{pattern:/@[\w-]+\s*:/,inside:{punctuation:/:/}},/@@?[\w-]+/],"mixin-usage":{pattern:/([{;]\s*)[.#](?!\d)[\w-].*?(?=[(;])/,lookbehind:!0,alias:"function"}}),r.languages.makefile={comment:{pattern:/(^|[^\\])#(?:\\(?:\r\n|[\s\S])|[^\\\r\n])*/,lookbehind:!0},string:{pattern:/(["'])(?:\\(?:\r\n|[\s\S])|(?!\1)[^\\\r\n])*\1/,greedy:!0},"builtin-target":{pattern:/\.[A-Z][^:#=\s]+(?=\s*:(?!=))/,alias:"builtin"},target:{pattern:/^(?:[^:=\s]|[ \t]+(?![\s:]))+(?=\s*:(?!=))/m,alias:"symbol",inside:{variable:/\$+(?:(?!\$)[^(){}:#=\s]+|(?=[({]))/}},variable:/\$+(?:(?!\$)[^(){}:#=\s]+|\([@*%<^+?][DF]\)|(?=[({]))/,keyword:/-include\b|\b(?:define|else|endef|endif|export|ifn?def|ifn?eq|include|override|private|sinclude|undefine|unexport|vpath)\b/,function:{pattern:/(\()(?:abspath|addsuffix|and|basename|call|dir|error|eval|file|filter(?:-out)?|findstring|firstword|flavor|foreach|guile|if|info|join|lastword|load|notdir|or|origin|patsubst|realpath|shell|sort|strip|subst|suffix|value|warning|wildcard|word(?:list|s)?)(?=[ \t])/,lookbehind:!0},operator:/(?:::|[?:+!])?=|[|@]/,punctuation:/[:;(){}]/},r.languages.objectivec=r.languages.extend("c",{string:{pattern:/@?"(?:\\(?:\r\n|[\s\S])|[^"\\\r\n])*"/,greedy:!0},keyword:/\b(?:asm|auto|break|case|char|const|continue|default|do|double|else|enum|extern|float|for|goto|if|in|inline|int|long|register|return|self|short|signed|sizeof|static|struct|super|switch|typedef|typeof|union|unsigned|void|volatile|while)\b|(?:@interface|@end|@implementation|@protocol|@class|@public|@protected|@private|@property|@try|@catch|@finally|@throw|@synthesize|@dynamic|@selector)\b/,operator:/-[->]?|\+\+?|!=?|<>?=?|==?|&&?|\|\|?|[~^%?*\/@]/}),delete r.languages.objectivec["class-name"],r.languages.objc=r.languages.objectivec,r.languages.ocaml={comment:{pattern:/\(\*[\s\S]*?\*\)/,greedy:!0},char:{pattern:/'(?:[^\\\r\n']|\\(?:.|[ox]?[0-9a-f]{1,3}))'/i,greedy:!0},string:[{pattern:/"(?:\\(?:[\s\S]|\r\n)|[^\\\r\n"])*"/,greedy:!0},{pattern:/\{([a-z_]*)\|[\s\S]*?\|\1\}/,greedy:!0}],number:[/\b(?:0b[01][01_]*|0o[0-7][0-7_]*)\b/i,/\b0x[a-f0-9][a-f0-9_]*(?:\.[a-f0-9_]*)?(?:p[+-]?\d[\d_]*)?(?!\w)/i,/\b\d[\d_]*(?:\.[\d_]*)?(?:e[+-]?\d[\d_]*)?(?!\w)/i],directive:{pattern:/\B#\w+/,alias:"property"},label:{pattern:/\B~\w+/,alias:"property"},"type-variable":{pattern:/\B'\w+/,alias:"function"},variant:{pattern:/`\w+/,alias:"symbol"},keyword:/\b(?:as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|match|method|module|mutable|new|nonrec|object|of|open|private|rec|sig|struct|then|to|try|type|val|value|virtual|when|where|while|with)\b/,boolean:/\b(?:false|true)\b/,"operator-like-punctuation":{pattern:/\[[<>|]|[>|]\]|\{<|>\}/,alias:"punctuation"},operator:/\.[.~]|:[=>]|[=<>@^|&+\-*\/$%!?~][!$%&*+\-.\/:<=>?@^|~]*|\b(?:and|asr|land|lor|lsl|lsr|lxor|mod|or)\b/,punctuation:/;;|::|[(){}\[\].,:;#]|\b_\b/},r.languages.python={comment:{pattern:/(^|[^\\])#.*/,lookbehind:!0,greedy:!0},"string-interpolation":{pattern:/(?:f|fr|rf)(?:("""|''')[\s\S]*?\1|("|')(?:\\.|(?!\2)[^\\\r\n])*\2)/i,greedy:!0,inside:{interpolation:{pattern:/((?:^|[^{])(?:\{\{)*)\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}]|\{(?!\{)(?:[^{}])+\})+\})+\}/,lookbehind:!0,inside:{"format-spec":{pattern:/(:)[^:(){}]+(?=\}$)/,lookbehind:!0},"conversion-option":{pattern:/![sra](?=[:}]$)/,alias:"punctuation"},rest:null}},string:/[\s\S]+/}},"triple-quoted-string":{pattern:/(?:[rub]|br|rb)?("""|''')[\s\S]*?\1/i,greedy:!0,alias:"string"},string:{pattern:/(?:[rub]|br|rb)?("|')(?:\\.|(?!\1)[^\\\r\n])*\1/i,greedy:!0},function:{pattern:/((?:^|\s)def[ \t]+)[a-zA-Z_]\w*(?=\s*\()/g,lookbehind:!0},"class-name":{pattern:/(\bclass\s+)\w+/i,lookbehind:!0},decorator:{pattern:/(^[\t ]*)@\w+(?:\.\w+)*/m,lookbehind:!0,alias:["annotation","punctuation"],inside:{punctuation:/\./}},keyword:/\b(?:_(?=\s*:)|and|as|assert|async|await|break|case|class|continue|def|del|elif|else|except|exec|finally|for|from|global|if|import|in|is|lambda|match|nonlocal|not|or|pass|print|raise|return|try|while|with|yield)\b/,builtin:/\b(?:__import__|abs|all|any|apply|ascii|basestring|bin|bool|buffer|bytearray|bytes|callable|chr|classmethod|cmp|coerce|compile|complex|delattr|dict|dir|divmod|enumerate|eval|execfile|file|filter|float|format|frozenset|getattr|globals|hasattr|hash|help|hex|id|input|int|intern|isinstance|issubclass|iter|len|list|locals|long|map|max|memoryview|min|next|object|oct|open|ord|pow|property|range|raw_input|reduce|reload|repr|reversed|round|set|setattr|slice|sorted|staticmethod|str|sum|super|tuple|type|unichr|unicode|vars|xrange|zip)\b/,boolean:/\b(?:False|None|True)\b/,number:/\b0(?:b(?:_?[01])+|o(?:_?[0-7])+|x(?:_?[a-f0-9])+)\b|(?:\b\d+(?:_\d+)*(?:\.(?:\d+(?:_\d+)*)?)?|\B\.\d+(?:_\d+)*)(?:e[+-]?\d+(?:_\d+)*)?j?(?!\w)/i,operator:/[-+%=]=?|!=|:=|\*\*?=?|\/\/?=?|<[<=>]?|>[=>]?|[&|^~]/,punctuation:/[{}[\];(),.:]/},r.languages.python["string-interpolation"].inside.interpolation.inside.rest=r.languages.python,r.languages.py=r.languages.python,r.languages.reason=r.languages.extend("clike",{string:{pattern:/"(?:\\(?:\r\n|[\s\S])|[^\\\r\n"])*"/,greedy:!0},"class-name":/\b[A-Z]\w*/,keyword:/\b(?:and|as|assert|begin|class|constraint|do|done|downto|else|end|exception|external|for|fun|function|functor|if|in|include|inherit|initializer|lazy|let|method|module|mutable|new|nonrec|object|of|open|or|private|rec|sig|struct|switch|then|to|try|type|val|virtual|when|while|with)\b/,operator:/\.{3}|:[:=]|\|>|->|=(?:==?|>)?|<=?|>=?|[|^?'#!~`]|[+\-*\/]\.?|\b(?:asr|land|lor|lsl|lsr|lxor|mod)\b/}),r.languages.insertBefore("reason","class-name",{char:{pattern:/'(?:\\x[\da-f]{2}|\\o[0-3][0-7][0-7]|\\\d{3}|\\.|[^'\\\r\n])'/,greedy:!0},constructor:/\b[A-Z]\w*\b(?!\s*\.)/,label:{pattern:/\b[a-z]\w*(?=::)/,alias:"symbol"}}),delete r.languages.reason.function,function(e){e.languages.sass=e.languages.extend("css",{comment:{pattern:/^([ \t]*)\/[\/*].*(?:(?:\r?\n|\r)\1[ \t].+)*/m,lookbehind:!0,greedy:!0}}),e.languages.insertBefore("sass","atrule",{"atrule-line":{pattern:/^(?:[ \t]*)[@+=].+/m,greedy:!0,inside:{atrule:/(?:@[\w-]+|[+=])/}}}),delete e.languages.sass.atrule;var t=/\$[-\w]+|#\{\$[-\w]+\}/,n=[/[+*\/%]|[=!]=|<=?|>=?|\b(?:and|not|or)\b/,{pattern:/(\s)-(?=\s)/,lookbehind:!0}];e.languages.insertBefore("sass","property",{"variable-line":{pattern:/^[ \t]*\$.+/m,greedy:!0,inside:{punctuation:/:/,variable:t,operator:n}},"property-line":{pattern:/^[ \t]*(?:[^:\s]+ *:.*|:[^:\s].*)/m,greedy:!0,inside:{property:[/[^:\s]+(?=\s*:)/,{pattern:/(:)[^:\s]+/,lookbehind:!0}],punctuation:/:/,variable:t,operator:n,important:e.languages.sass.important}}}),delete e.languages.sass.property,delete e.languages.sass.important,e.languages.insertBefore("sass","punctuation",{selector:{pattern:/^([ \t]*)\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*(?:,(?:\r?\n|\r)\1[ \t]+\S(?:,[^,\r\n]+|[^,\r\n]*)(?:,[^,\r\n]+)*)*/m,lookbehind:!0,greedy:!0}})}(r),r.languages.scss=r.languages.extend("css",{comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},atrule:{pattern:/@[\w-](?:\([^()]+\)|[^()\s]|\s+(?!\s))*?(?=\s+[{;])/,inside:{rule:/@[\w-]+/}},url:/(?:[-a-z]+-)?url(?=\()/i,selector:{pattern:/(?=\S)[^@;{}()]?(?:[^@;{}()\s]|\s+(?!\s)|#\{\$[-\w]+\})+(?=\s*\{(?:\}|\s|[^}][^:{}]*[:{][^}]))/,inside:{parent:{pattern:/&/,alias:"important"},placeholder:/%[-\w]+/,variable:/\$[-\w]+|#\{\$[-\w]+\}/}},property:{pattern:/(?:[-\w]|\$[-\w]|#\{\$[-\w]+\})+(?=\s*:)/,inside:{variable:/\$[-\w]+|#\{\$[-\w]+\}/}}}),r.languages.insertBefore("scss","atrule",{keyword:[/@(?:content|debug|each|else(?: if)?|extend|for|forward|function|if|import|include|mixin|return|use|warn|while)\b/i,{pattern:/( )(?:from|through)(?= )/,lookbehind:!0}]}),r.languages.insertBefore("scss","important",{variable:/\$[-\w]+|#\{\$[-\w]+\}/}),r.languages.insertBefore("scss","function",{"module-modifier":{pattern:/\b(?:as|hide|show|with)\b/i,alias:"keyword"},placeholder:{pattern:/%[-\w]+/,alias:"selector"},statement:{pattern:/\B!(?:default|optional)\b/i,alias:"keyword"},boolean:/\b(?:false|true)\b/,null:{pattern:/\bnull\b/,alias:"keyword"},operator:{pattern:/(\s)(?:[-+*\/%]|[=!]=|<=?|>=?|and|not|or)(?=\s)/,lookbehind:!0}}),r.languages.scss.atrule.inside.rest=r.languages.scss,function(e){var t={pattern:/(\b\d+)(?:%|[a-z]+)/,lookbehind:!0},n={pattern:/(^|[^\w.-])-?(?:\d+(?:\.\d+)?|\.\d+)/,lookbehind:!0},r={comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0},url:{pattern:/\burl\((["']?).*?\1\)/i,greedy:!0},string:{pattern:/("|')(?:(?!\1)[^\\\r\n]|\\(?:\r\n|[\s\S]))*\1/,greedy:!0},interpolation:null,func:null,important:/\B!(?:important|optional)\b/i,keyword:{pattern:/(^|\s+)(?:(?:else|for|if|return|unless)(?=\s|$)|@[\w-]+)/,lookbehind:!0},hexcode:/#[\da-f]{3,6}/i,color:[/\b(?:AliceBlue|AntiqueWhite|Aqua|Aquamarine|Azure|Beige|Bisque|Black|BlanchedAlmond|Blue|BlueViolet|Brown|BurlyWood|CadetBlue|Chartreuse|Chocolate|Coral|CornflowerBlue|Cornsilk|Crimson|Cyan|DarkBlue|DarkCyan|DarkGoldenRod|DarkGr[ae]y|DarkGreen|DarkKhaki|DarkMagenta|DarkOliveGreen|DarkOrange|DarkOrchid|DarkRed|DarkSalmon|DarkSeaGreen|DarkSlateBlue|DarkSlateGr[ae]y|DarkTurquoise|DarkViolet|DeepPink|DeepSkyBlue|DimGr[ae]y|DodgerBlue|FireBrick|FloralWhite|ForestGreen|Fuchsia|Gainsboro|GhostWhite|Gold|GoldenRod|Gr[ae]y|Green|GreenYellow|HoneyDew|HotPink|IndianRed|Indigo|Ivory|Khaki|Lavender|LavenderBlush|LawnGreen|LemonChiffon|LightBlue|LightCoral|LightCyan|LightGoldenRodYellow|LightGr[ae]y|LightGreen|LightPink|LightSalmon|LightSeaGreen|LightSkyBlue|LightSlateGr[ae]y|LightSteelBlue|LightYellow|Lime|LimeGreen|Linen|Magenta|Maroon|MediumAquaMarine|MediumBlue|MediumOrchid|MediumPurple|MediumSeaGreen|MediumSlateBlue|MediumSpringGreen|MediumTurquoise|MediumVioletRed|MidnightBlue|MintCream|MistyRose|Moccasin|NavajoWhite|Navy|OldLace|Olive|OliveDrab|Orange|OrangeRed|Orchid|PaleGoldenRod|PaleGreen|PaleTurquoise|PaleVioletRed|PapayaWhip|PeachPuff|Peru|Pink|Plum|PowderBlue|Purple|Red|RosyBrown|RoyalBlue|SaddleBrown|Salmon|SandyBrown|SeaGreen|SeaShell|Sienna|Silver|SkyBlue|SlateBlue|SlateGr[ae]y|Snow|SpringGreen|SteelBlue|Tan|Teal|Thistle|Tomato|Transparent|Turquoise|Violet|Wheat|White|WhiteSmoke|Yellow|YellowGreen)\b/i,{pattern:/\b(?:hsl|rgb)\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*\)\B|\b(?:hsl|rgb)a\(\s*\d{1,3}\s*,\s*\d{1,3}%?\s*,\s*\d{1,3}%?\s*,\s*(?:0|0?\.\d+|1)\s*\)\B/i,inside:{unit:t,number:n,function:/[\w-]+(?=\()/,punctuation:/[(),]/}}],entity:/\\[\da-f]{1,8}/i,unit:t,boolean:/\b(?:false|true)\b/,operator:[/~|[+!\/%<>?=]=?|[-:]=|\*[*=]?|\.{2,3}|&&|\|\||\B-\B|\b(?:and|in|is(?: a| defined| not|nt)?|not|or)\b/],number:n,punctuation:/[{}()\[\];:,]/};r.interpolation={pattern:/\{[^\r\n}:]+\}/,alias:"variable",inside:{delimiter:{pattern:/^\{|\}$/,alias:"punctuation"},rest:r}},r.func={pattern:/[\w-]+\([^)]*\).*/,inside:{function:/^[^(]+/,rest:r}},e.languages.stylus={"atrule-declaration":{pattern:/(^[ \t]*)@.+/m,lookbehind:!0,inside:{atrule:/^@[\w-]+/,rest:r}},"variable-declaration":{pattern:/(^[ \t]*)[\w$-]+\s*.?=[ \t]*(?:\{[^{}]*\}|\S.*|$)/m,lookbehind:!0,inside:{variable:/^\S+/,rest:r}},statement:{pattern:/(^[ \t]*)(?:else|for|if|return|unless)[ \t].+/m,lookbehind:!0,inside:{keyword:/^\S+/,rest:r}},"property-declaration":{pattern:/((?:^|\{)([ \t]*))(?:[\w-]|\{[^}\r\n]+\})+(?:\s*:\s*|[ \t]+)(?!\s)[^{\r\n]*(?:;|[^{\r\n,]$(?!(?:\r?\n|\r)(?:\{|\2[ \t])))/m,lookbehind:!0,inside:{property:{pattern:/^[^\s:]+/,inside:{interpolation:r.interpolation}},rest:r}},selector:{pattern:/(^[ \t]*)(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)(?:(?:\r?\n|\r)(?:\1(?:(?=\S)(?:[^{}\r\n:()]|::?[\w-]+(?:\([^)\r\n]*\)|(?![\w-]))|\{[^}\r\n]+\})+)))*(?:,$|\{|(?=(?:\r?\n|\r)(?:\{|\1[ \t])))/m,lookbehind:!0,inside:{interpolation:r.interpolation,comment:r.comment,punctuation:/[{},]/}},func:r.func,string:r.string,comment:{pattern:/(^|[^\\])(?:\/\*[\s\S]*?\*\/|\/\/.*)/,lookbehind:!0,greedy:!0},interpolation:r.interpolation,punctuation:/[{}()\[\];:.]/}}(r),function(e){var t=e.util.clone(e.languages.typescript);e.languages.tsx=e.languages.extend("jsx",t),delete e.languages.tsx.parameter,delete e.languages.tsx["literal-property"];var n=e.languages.tsx.tag;n.pattern=RegExp(/(^|[^\w$]|(?=<\/))/.source+"(?:"+n.pattern.source+")",n.pattern.flags),n.lookbehind=!0}(r),r.languages.wasm={comment:[/\(;[\s\S]*?;\)/,{pattern:/;;.*/,greedy:!0}],string:{pattern:/"(?:\\[\s\S]|[^"\\])*"/,greedy:!0},keyword:[{pattern:/\b(?:align|offset)=/,inside:{operator:/=/}},{pattern:/\b(?:(?:f32|f64|i32|i64)(?:\.(?:abs|add|and|ceil|clz|const|convert_[su]\/i(?:32|64)|copysign|ctz|demote\/f64|div(?:_[su])?|eqz?|extend_[su]\/i32|floor|ge(?:_[su])?|gt(?:_[su])?|le(?:_[su])?|load(?:(?:8|16|32)_[su])?|lt(?:_[su])?|max|min|mul|neg?|nearest|or|popcnt|promote\/f32|reinterpret\/[fi](?:32|64)|rem_[su]|rot[lr]|shl|shr_[su]|sqrt|store(?:8|16|32)?|sub|trunc(?:_[su]\/f(?:32|64))?|wrap\/i64|xor))?|memory\.(?:grow|size))\b/,inside:{punctuation:/\./}},/\b(?:anyfunc|block|br(?:_if|_table)?|call(?:_indirect)?|data|drop|elem|else|end|export|func|get_(?:global|local)|global|if|import|local|loop|memory|module|mut|nop|offset|param|result|return|select|set_(?:global|local)|start|table|tee_local|then|type|unreachable)\b/],variable:/\$[\w!#$%&'*+\-./:<=>?@\\^`|~]+/,number:/[+-]?\b(?:\d(?:_?\d)*(?:\.\d(?:_?\d)*)?(?:[eE][+-]?\d(?:_?\d)*)?|0x[\da-fA-F](?:_?[\da-fA-F])*(?:\.[\da-fA-F](?:_?[\da-fA-D])*)?(?:[pP][+-]?\d(?:_?\d)*)?)\b|\binf\b|\bnan(?::0x[\da-fA-F](?:_?[\da-fA-D])*)?\b/,punctuation:/[()]/},t.Z=r},7459:function(e,t,n){"use strict";function r(e){var t,n,a="";if("string"==typeof e||"number"==typeof e)a+=e;else if("object"==typeof e)if(Array.isArray(e))for(t=0;tPromise.all([n.e(532),n.e(4013)]).then(n.bind(n,1223)),"@theme/BlogTagsListPage",1223],"025af2c8":[()=>n.e(7436).then(n.t.bind(n,5350,19)),"~blog/default/blog-tags-swap-16f-list.json",5350],"0397f03f":[()=>n.e(6230).then(n.t.bind(n,8064,19)),"~blog/default/blog-tags-cryptocurrency-page-3-50b-list.json",8064],"05ef38e5":[()=>n.e(2650).then(n.t.bind(n,8272,19)),"~blog/default/blog-tags-tech-blog-8d9-list.json",8272],"0b940b3c":[()=>Promise.all([n.e(7378),n.e(6018)]).then(n.bind(n,5997)),"@site/blog/2022-01-29-introducing-hashgreen-dex/index.md",5997],"0be9de06":[()=>n.e(7222).then(n.t.bind(n,390,19)),"~blog/default/blog-tags-api-ce2-list.json",390],"0c66f5ac":[()=>n.e(9620).then(n.t.bind(n,4122,19)),"~blog/default/blog-tags-airdrop-637-list.json",4122],"0d3e05cf":[()=>n.e(1510).then(n.t.bind(n,8637,19)),"~blog/default/blog-tags-hashgreen-page-3-0e9.json",8637],"0dffb83e":[()=>n.e(5075).then(n.bind(n,3208)),"@site/docs/roadmap.md",3208],"0f78d839":[()=>n.e(4801).then(n.t.bind(n,87,19)),"~blog/default/blog-tags-trivia-1e3-list.json",87],"101c1ba8":[()=>n.e(2988).then(n.t.bind(n,3357,19)),"~blog/default/blog-tags-hashgreen-page-2-a30-list.json",3357],"101f4f99":[()=>n.e(9419).then(n.bind(n,687)),"@site/docs/dex/faq.md",687],"10780f15":[()=>n.e(5438).then(n.t.bind(n,9086,19)),"~blog/default/blog-tags-nft-16a-list.json",9086],"1128d874":[()=>n.e(4273).then(n.bind(n,984)),"@site/blog/weekly-update-17/index.md?truncated=true",984],"13d14a27":[()=>n.e(1208).then(n.t.bind(n,5458,19)),"~blog/default/blog-tags-hashgreenswap-34f-list.json",5458],"13f8009c":[()=>n.e(428).then(n.t.bind(n,4579,19)),"~blog/default/blog-tags-market-statistics-2f2-list.json",4579],"14aa8719":[()=>n.e(6326).then(n.t.bind(n,4292,19)),"~blog/default/blog-tags-my-orders-330.json",4292],"14c5251d":[()=>n.e(4066).then(n.bind(n,1533)),"@site/blog/join-hashgreenswap-on-testnet-v0.2-release/index.md",1533],"14eb3368":[()=>Promise.all([n.e(532),n.e(9817)]).then(n.bind(n,4228)),"@theme/DocCategoryGeneratedIndexPage",4228],"16bf390c":[()=>n.e(3571).then(n.bind(n,6747)),"@site/blog/weekly-update-4/index.md?truncated=true",6747],17896441:[()=>Promise.all([n.e(532),n.e(6150),n.e(7918)]).then(n.bind(n,5154)),"@theme/DocItem",5154],"194d2b5b":[()=>n.e(5361).then(n.t.bind(n,1933,19)),"~blog/default/blog-tags-trading-api-1d3.json",1933],"19d2b781":[()=>n.e(3839).then(n.t.bind(n,3384,19)),"~blog/default/blog-tags-hashgreen-page-3-0e9-list.json",3384],"1a25ec0b":[()=>n.e(2019).then(n.bind(n,2672)),"@site/docs/features.md",2672],"1b5e2f2b":[()=>n.e(3280).then(n.bind(n,162)),"@site/blog/weekly-update-12/index.md?truncated=true",162],"1be78505":[()=>Promise.all([n.e(532),n.e(9514)]).then(n.bind(n,9963)),"@theme/DocPage",9963],"1db64337":[()=>n.e(1372).then(n.bind(n,6777)),"@site/docs/overview.md",6777],"1ea24fd1":[()=>n.e(7258).then(n.t.bind(n,6233,19)),"~blog/default/blog-tags-blockchain-page-3-f24.json",6233],"1ed7eaf5":[()=>n.e(7838).then(n.bind(n,3890)),"@site/blog/weekly-update-17/index.md",3890],"1eef51e3":[()=>n.e(6826).then(n.t.bind(n,6428,19)),"~blog/default/blog-tags-amm-page-2-cd3-list.json",6428],"216bc5d0":[()=>n.e(6403).then(n.bind(n,9064)),"@site/blog/hashgreenswap-v0.3-release/index.md",9064],"216e8404":[()=>n.e(16).then(n.bind(n,5682)),"@site/blog/weekly-update-9/index.md?truncated=true",5682],"227700d5":[()=>n.e(1161).then(n.bind(n,4736)),"@site/blog/weekly-update-16/index.md?truncated=true",4736],"237e4f36":[()=>n.e(3205).then(n.bind(n,4412)),"@site/docs/how-to-test-hashgreenswap-on-testnet.md",4412],"2723a245":[()=>n.e(3363).then(n.t.bind(n,3825,19)),"~blog/default/blog-tags-amm-1de-list.json",3825],"283467cd":[()=>n.e(4046).then(n.bind(n,692)),"@site/blog/weekly-update-14/index.md",692],"288817c3":[()=>n.e(6679).then(n.t.bind(n,7051,19)),"~blog/default/blog-tags-wallet-integration-5b2.json",7051],"2da7b18e":[()=>n.e(9215).then(n.t.bind(n,3769,19)),"/Users/zilong/Desktop/Zilong/hashgreen/hashgreen-docs/.docusaurus/docusaurus-plugin-content-docs/default/plugin-route-context-module-100.json",3769],"2ed736ae":[()=>n.e(1936).then(n.t.bind(n,2614,19)),"~blog/default/blog-tags-update-827.json",2614],30466732:[()=>n.e(5497).then(n.bind(n,9542)),"@site/docs/liquidity-pool.md",9542],"325c316b":[()=>n.e(583).then(n.t.bind(n,5133,19)),"~blog/default/blog-tags-cryptocurrency-page-3-50b.json",5133],"32cf5928":[()=>n.e(9929).then(n.bind(n,7096)),"@site/blog/weekly-update-7/index.md",7096],"343b811f":[()=>n.e(8e3).then(n.bind(n,6423)),"@site/blog/weekly-update-4/index.md",6423],"34b8839c":[()=>n.e(7594).then(n.t.bind(n,9019,19)),"~blog/default/blog-tags-landing-page-aaa-list.json",9019],"363c285a":[()=>n.e(296).then(n.t.bind(n,7390,19)),"~blog/default/blog-tags-cat-7a4.json",7390],"369bd8f8":[()=>n.e(5391).then(n.t.bind(n,5650,19)),"~blog/default/blog-tags-tutorial-e7d-list.json",5650],"386427c2":[()=>n.e(2687).then(n.bind(n,7641)),"@site/blog/weekly-update-11/index.md?truncated=true",7641],"3935786e":[()=>n.e(6175).then(n.t.bind(n,7014,19)),"~blog/default/blog-tags-dex-page-2-e40.json",7014],"3b751a6c":[()=>n.e(7302).then(n.t.bind(n,1739,19)),"~blog/default/blog-tags-chia-65d.json",1739],"3bc9dd6d":[()=>Promise.all([n.e(7378),n.e(9599)]).then(n.bind(n,386)),"@site/blog/2022-01-29-introducing-hashgreen-dex/index.md?truncated=true",386],"3be90fd0":[()=>n.e(8842).then(n.t.bind(n,2927,19)),"~blog/default/blog-tags-mit-page-2-f13.json",2927],"42fbd662":[()=>n.e(1882).then(n.t.bind(n,6523,19)),"~blog/default/blog-tags-market-statistics-2f2.json",6523],"45ab534e":[()=>n.e(8509).then(n.t.bind(n,2654,19)),"~blog/default/blog-tags-chia-page-3-10b-list.json",2654],"468416a0":[()=>n.e(5614).then(n.t.bind(n,9557,19)),"~blog/default/blog-tags-blockchain-bb4.json",9557],"46bb3a7a":[()=>n.e(6318).then(n.bind(n,6181)),"@site/docs/partners.md",6181],"4767f4a4":[()=>n.e(324).then(n.t.bind(n,7149,19)),"~blog/default/blog-tags-startup-25b.json",7149],"4ae51151":[()=>n.e(269).then(n.bind(n,655)),"@site/blog/2022-03-02-weekly-update/index.md?truncated=true",655],"4c841d2f":[()=>n.e(1006).then(n.t.bind(n,8671,19)),"~blog/default/blog-tags-order-book-9f5.json",8671],"4f88daf5":[()=>n.e(4676).then(n.t.bind(n,7470,19)),"~blog/default/blog-tags-dex-99a.json",7470],"52c58939":[()=>n.e(1228).then(n.t.bind(n,3379,19)),"~blog/default/blog-tags-startup-page-3-595-list.json",3379],"557a4225":[()=>n.e(8264).then(n.bind(n,7251)),"@site/blog/2022-03-02-weekly-update/index.md",7251],"5655c2ff":[()=>n.e(7553).then(n.bind(n,9954)),"@site/docs/how-to-trade-on-hashgreenswap.md",9954],"5ad34c7e":[()=>n.e(9126).then(n.bind(n,67)),"@site/docs/token-launchpad.md",67],"5ae84af0":[()=>n.e(5536).then(n.bind(n,9094)),"@site/docs/tokenomics.md",9094],"5c158c69":[()=>n.e(1517).then(n.bind(n,2553)),"@site/blog/weekly-update-13/index.md",2553],"5ef0e9d6":[()=>n.e(9880).then(n.bind(n,5330)),"@site/docs/community.md",5330],"607d35dd":[()=>n.e(7381).then(n.bind(n,5667)),"@site/blog/2022-02-14-weekly-update/index.md",5667],"62013a39":[()=>n.e(4067).then(n.t.bind(n,938,19)),"~blog/default/blog-tags-p-2-p-f81-list.json",938],"633a5b5b":[()=>n.e(8083).then(n.t.bind(n,111,19)),"~blog/default/blog-tags-rwd-cd7-list.json",111],"63823fcd":[()=>n.e(4111).then(n.t.bind(n,4737,19)),"~blog/default/blog-tags-dex-page-2-e40-list.json",4737],"650d2ea4":[()=>n.e(9032).then(n.t.bind(n,8075,19)),"~blog/default/blog-tags-cat-7a4-list.json",8075],"66f622fd":[()=>n.e(753).then(n.t.bind(n,1941,19)),"~blog/default/blog-tags-hoogii-da6.json",1941],"67e7e7a7":[()=>n.e(3080).then(n.t.bind(n,5234,19)),"~blog/default/blog-tags-startup-page-2-faa-list.json",5234],"6875c492":[()=>Promise.all([n.e(532),n.e(6150),n.e(6048),n.e(8610)]).then(n.bind(n,1714)),"@theme/BlogTagsPostsPage",1714],"689c8333":[()=>n.e(1138).then(n.t.bind(n,2750,19)),"~blog/default/blog-tags-chia-65d-list.json",2750],"68dd6993":[()=>n.e(9666).then(n.t.bind(n,3460,19)),"~blog/default/blog-tags-wallet-integration-5b2-list.json",3460],"6b976c3c":[()=>n.e(2020).then(n.bind(n,1397)),"@site/blog/weekly-update-14/index.md?truncated=true",1397],"6d453d64":[()=>n.e(9287).then(n.t.bind(n,794,19)),"~blog/default/blog-tags-api-ce2.json",794],"6e0b5c3f":[()=>n.e(7923).then(n.bind(n,7439)),"@site/blog/weekly-update-10/index.md?truncated=true",7439],"6e0c34d8":[()=>n.e(624).then(n.bind(n,6206)),"@site/blog/weekly-update-5/index.md",6206],"6f7d398e":[()=>n.e(5465).then(n.bind(n,7030)),"@site/blog/weekly-update-8/index.md",7030],"70ad3ff0":[()=>n.e(147).then(n.t.bind(n,3478,19)),"~blog/default/blog-tags-blockchain-bb4-list.json",3478],"71d26506":[()=>n.e(5774).then(n.t.bind(n,8015,19)),"~blog/default/blog-tags-startup-page-3-595.json",8015],72822034:[()=>n.e(9496).then(n.t.bind(n,7982,19)),"~blog/default/blog-tags-i-18-n-d57-list.json",7982],"7485ae2a":[()=>Promise.all([n.e(532),n.e(9852)]).then(n.bind(n,799)),"@site/docs/get-started.md",799],"7702def5":[()=>n.e(6515).then(n.bind(n,2693)),"@site/blog/weekly-update-13/index.md?truncated=true",2693],"77e23114":[()=>n.e(5074).then(n.t.bind(n,7217,19)),"~blog/default/blog-tags-tutorial-e7d.json",7217],"77f129bb":[()=>n.e(3493).then(n.t.bind(n,2399,19)),"~blog/default/blog-tags-mit-40a.json",2399],"7a84216a":[()=>n.e(9530).then(n.bind(n,141)),"@site/blog/weekly-update-7/index.md?truncated=true",141],"7aeb2aef":[()=>n.e(1345).then(n.bind(n,8846)),"@site/docs/aggregator-program.md",8846],"7dfdb0e6":[()=>n.e(3870).then(n.bind(n,2110)),"@site/blog/2022-02-07-weekly-update/index.md",2110],"8070b823":[()=>n.e(8614).then(n.t.bind(n,6061,19)),"~blog/default/blog-tags-startup-25b-list.json",6061],"814f3328":[()=>n.e(2535).then(n.t.bind(n,5641,19)),"~blog/default/blog-post-list-prop-default.json",5641],"84bf12bb":[()=>n.e(5825).then(n.t.bind(n,9277,19)),"~blog/default/blog-tags-landing-page-aaa.json",9277],"85c89a08":[()=>n.e(3495).then(n.bind(n,4474)),"@site/docs/exchange.md",4474],"85fc7466":[()=>n.e(2379).then(n.t.bind(n,8781,19)),"~blog/default/blog-tags-dex-99a-list.json",8781],86353644:[()=>n.e(1944).then(n.t.bind(n,1961,19)),"~blog/default/blog-tags-computer-system-design-ed8-list.json",1961],"864b5ef0":[()=>n.e(2943).then(n.t.bind(n,6910,19)),"~blog/default/blog-tags-my-orders-330-list.json",6910],"869a10b6":[()=>n.e(926).then(n.t.bind(n,9312,19)),"~blog/default/blog-tags-amm-page-2-cd3.json",9312],"87b3fb16":[()=>n.e(2897).then(n.bind(n,9955)),"@site/blog/blog-1-a-trusted-gateway-system/index.md",9955],"8a0d19f8":[()=>n.e(4819).then(n.t.bind(n,163,19)),"~blog/default/blog-tags-chia-page-2-73b-list.json",163],"8b1ef2c5":[()=>n.e(3650).then(n.bind(n,4847)),"@site/blog/hashgreenswap-v0.3-release/index.md?truncated=true",4847],"8df36641":[()=>n.e(4536).then(n.bind(n,9)),"@site/blog/weekly-update-10/index.md",9],"8e99cdba":[()=>n.e(4932).then(n.t.bind(n,132,19)),"~blog/default/blog-tags-update-page-2-08a.json",132],"8eb4e46b":[()=>n.e(1).then(n.t.bind(n,2638,19)),"~blog/default/blog-page-2-677.json",2638],"8f3c9456":[()=>n.e(3338).then(n.t.bind(n,9777,19)),"~docs/default/category-sidebar-category-hashgreen-dex-420.json",9777],"8f5ffd9c":[()=>n.e(4556).then(n.t.bind(n,8133,19)),"~blog/default/blog-tags-cryptocurrency-7fe.json",8133],"8f654710":[()=>n.e(7317).then(n.bind(n,3604)),"@site/docs/yield-farming.md",3604],"92999a1c":[()=>n.e(8442).then(n.t.bind(n,5310,19)),"~blog/default/blog-page-3-fd4.json",5310],"935f2afb":[()=>n.e(53).then(n.t.bind(n,1109,19)),"~docs/default/version-current-metadata-prop-751.json",1109],"938b1267":[()=>n.e(2092).then(n.bind(n,7473)),"@site/blog/weekly-update-9/index.md",7473],"95e94398":[()=>n.e(9549).then(n.t.bind(n,4437,19)),"~blog/default/blog-tags-blockchain-page-2-aa1-list.json",4437],"977063cb":[()=>n.e(5611).then(n.t.bind(n,2591,19)),"~blog/default/blog-tags-p-2-p-f81.json",2591],"977fd776":[()=>n.e(444).then(n.t.bind(n,8430,19)),"~blog/default/blog-tags-chialisp-2f4.json",8430],"9cc688b2":[()=>n.e(2866).then(n.t.bind(n,1762,19)),"~blog/default/blog-tags-offer-47c-list.json",1762],"9e04f3b6":[()=>n.e(905).then(n.t.bind(n,7215,19)),"~blog/default/blog-tags-offer-47c.json",7215],"9e4087bc":[()=>n.e(3608).then(n.bind(n,3169)),"@theme/BlogArchivePage",3169],a26d8574:[()=>n.e(193).then(n.t.bind(n,6203,19)),"~blog/default/blog-tags-blockchain-page-2-aa1.json",6203],a34fd1e7:[()=>n.e(1604).then(n.t.bind(n,9011,19)),"~blog/default/blog-tags-order-book-9f5-list.json",9011],a6399f40:[()=>n.e(5180).then(n.bind(n,7430)),"@site/blog/2022-02-07-weekly-update/index.md?truncated=true",7430],a6aa9e1f:[()=>Promise.all([n.e(532),n.e(6150),n.e(6048),n.e(3089)]).then(n.bind(n,46)),"@theme/BlogListPage",46],a6e1df93:[()=>n.e(1503).then(n.t.bind(n,203,19)),"~blog/default/blog-tags-i-18-n-d57.json",203],a7023ddc:[()=>n.e(1713).then(n.t.bind(n,3457,19)),"~blog/default/blog-tags-tags-4c2.json",3457],a79a5077:[()=>n.e(6828).then(n.bind(n,7841)),"@site/blog/airdrop-on-hashgreen-dex/index.md?truncated=true",7841],a8a015ed:[()=>n.e(8827).then(n.t.bind(n,5811,19)),"~blog/default/blog-tags-update-827-list.json",5811],abc4dbbd:[()=>n.e(1712).then(n.t.bind(n,3148,19)),"~blog/default/blog-tags-mit-page-3-6a2-list.json",3148],ac0667df:[()=>n.e(9829).then(n.t.bind(n,154,19)),"~blog/default/blog-tags-chia-page-2-73b.json",154],ac14fe44:[()=>n.e(6411).then(n.t.bind(n,4572,19)),"~blog/default/blog-tags-computer-system-design-ed8.json",4572],ad3d5c65:[()=>n.e(4767).then(n.t.bind(n,5871,19)),"~docs/default/category-sidebar-category-products-1a0.json",5871],adfd5162:[()=>n.e(6101).then(n.t.bind(n,3773,19)),"~blog/default/blog-tags-testnet-3e3-list.json",3773],aef10b71:[()=>n.e(8373).then(n.bind(n,457)),"@site/docs/hashgreen-dao.md",457],af211a46:[()=>n.e(2043).then(n.t.bind(n,855,19)),"~blog/default/blog-tags-chia-page-3-10b.json",855],af269a70:[()=>n.e(7509).then(n.bind(n,766)),"@site/blog/HashgreenSwap-v0.1-is-now-live-on-testnet/index.md",766],b0a8e85e:[()=>n.e(500).then(n.t.bind(n,1672,19)),"~blog/default/blog-tags-nft-16a.json",1672],b0dd9fa7:[()=>n.e(119).then(n.t.bind(n,5588,19)),"~blog/default/blog-tags-trivia-1e3.json",5588],b2b675dd:[()=>n.e(533).then(n.t.bind(n,8017,19)),"~blog/default/blog-c06.json",8017],b2f554cd:[()=>n.e(1477).then(n.t.bind(n,10,19)),"~blog/default/blog-archive-80c.json",10],b3b50ef9:[()=>n.e(2805).then(n.bind(n,8711)),"@site/blog/HashgreenSwap-v0.1-is-now-live-on-testnet/index.md?truncated=true",8711],b5463f3e:[()=>n.e(4150).then(n.bind(n,2823)),"@site/blog/weekly-update-15/index.md?truncated=true",2823],b8c805d8:[()=>n.e(9832).then(n.t.bind(n,6620,19)),"~blog/default/blog-tags-hoogii-da6-list.json",6620],ba67ce6d:[()=>n.e(847).then(n.t.bind(n,1054,19)),"~blog/default/blog-tags-airdrop-637.json",1054],bbc01332:[()=>n.e(7781).then(n.t.bind(n,5884,19)),"~blog/default/blog-tags-chialisp-2f4-list.json",5884],bc447528:[()=>n.e(2394).then(n.t.bind(n,9212,19)),"~blog/default/blog-tags-cryptocurrency-7fe-list.json",9212],bd4931e8:[()=>n.e(526).then(n.bind(n,3912)),"@site/blog/weekly-update-18/index.md",3912],c09a64e5:[()=>n.e(5826).then(n.t.bind(n,8218,19)),"~blog/default/blog-tags-swap-16f.json",8218],c1fbf885:[()=>n.e(6699).then(n.bind(n,5534)),"@site/blog/airdrop-on-hashgreen-dex/index.md",5534],c2948f62:[()=>n.e(5386).then(n.bind(n,5091)),"@site/blog/weekly-update-18/index.md?truncated=true",5091],cab8a987:[()=>n.e(9045).then(n.t.bind(n,268,19)),"~blog/default/blog-tags-update-page-2-08a-list.json",268],cc1c1a94:[()=>n.e(9403).then(n.bind(n,1188)),"@site/blog/weekly-update-12/index.md",1188],ccc49370:[()=>Promise.all([n.e(532),n.e(6150),n.e(6048),n.e(6103)]).then(n.bind(n,5203)),"@theme/BlogPostPage",5203],cd4efd0c:[()=>n.e(4800).then(n.bind(n,5519)),"@site/docs/dex/trading-api.md",5519],cf0fd668:[()=>n.e(2356).then(n.t.bind(n,3479,19)),"~blog/default/blog-tags-startup-page-2-faa.json",3479],cf7783af:[()=>n.e(3597).then(n.bind(n,6418)),"@site/blog/weekly-update-11/index.md",6418],d1100fbe:[()=>n.e(7637).then(n.t.bind(n,7796,19)),"~blog/default/blog-tags-cryptocurrency-page-2-ec9.json",7796],d299d9fa:[()=>n.e(4075).then(n.bind(n,3220)),"@site/blog/weekly-update-16/index.md",3220],d29ec3fe:[()=>n.e(9669).then(n.bind(n,6461)),"@site/blog/blog-1-a-trusted-gateway-system/index.md?truncated=true",6461],d6a5fd4a:[()=>n.e(7556).then(n.bind(n,3588)),"@site/blog/weekly-update-6/index.md?truncated=true",3588],d783f024:[()=>n.e(8762).then(n.t.bind(n,9500,19)),"~blog/default/blog-tags-testnet-3e3.json",9500],d918aa98:[()=>n.e(6932).then(n.bind(n,9281)),"@site/blog/join-hashgreenswap-on-testnet-v0.2-release/index.md?truncated=true",9281],d9663629:[()=>n.e(5013).then(n.bind(n,416)),"@site/blog/weekly-update-15/index.md",416],da5741a8:[()=>n.e(2939).then(n.t.bind(n,5873,19)),"~blog/default/blog-tags-amm-1de.json",5873],da719057:[()=>n.e(513).then(n.t.bind(n,4007,19)),"~blog/default/blog-tags-tech-blog-8d9.json",4007],db689dc0:[()=>n.e(6247).then(n.t.bind(n,7781,19)),"~blog/default/blog-tags-mit-page-3-6a2.json",7781],dc94fc44:[()=>n.e(5541).then(n.t.bind(n,6472,19)),"~blog/default/blog-tags-hashgreen-dc2-list.json",6472],e1a07b9e:[()=>n.e(4335).then(n.t.bind(n,9700,19)),"~blog/default/blog-tags-blockchain-page-3-f24-list.json",9700],e26902a7:[()=>n.e(1007).then(n.t.bind(n,7376,19)),"~blog/default/blog-tags-mit-page-2-f13-list.json",7376],e3876e11:[()=>n.e(6153).then(n.bind(n,997)),"@site/blog/2022-02-14-weekly-update/index.md?truncated=true",997],e43ecc98:[()=>n.e(9869).then(n.t.bind(n,5985,19)),"~blog/default/blog-tags-hashgreen-dc2.json",5985],e4cbda74:[()=>n.e(3451).then(n.t.bind(n,4469,19)),"/Users/zilong/Desktop/Zilong/hashgreen/hashgreen-docs/.docusaurus/docusaurus-plugin-content-blog/default/plugin-route-context-module-100.json",4469],e6b447b1:[()=>n.e(7939).then(n.t.bind(n,8720,19)),"~blog/default/blog-tags-hashgreenswap-34f.json",8720],ed9151ec:[()=>n.e(8588).then(n.t.bind(n,9644,19)),"~blog/default/blog-tags-hashgreen-page-2-a30.json",9644],ee248d19:[()=>n.e(4795).then(n.bind(n,2592)),"@site/blog/weekly-update-5/index.md?truncated=true",2592],ee67255f:[()=>n.e(635).then(n.t.bind(n,712,19)),"~blog/default/blog-tags-cryptocurrency-page-2-ec9-list.json",712],f29fb35a:[()=>n.e(1147).then(n.bind(n,992)),"@site/blog/weekly-update-8/index.md?truncated=true",992],f4897484:[()=>n.e(1701).then(n.bind(n,4473)),"@site/blog/weekly-update-6/index.md",4473],f67163f6:[()=>n.e(8701).then(n.t.bind(n,4569,19)),"~blog/default/blog-tags-rwd-cd7.json",4569],f6dace95:[()=>n.e(2414).then(n.t.bind(n,9444,19)),"~blog/default/blog-tags-mit-40a-list.json",9444],fa871338:[()=>n.e(2409).then(n.t.bind(n,1751,19)),"~blog/default/blog-tags-trading-api-1d3-list.json",1751]};function c(e){let{error:t,retry:n,pastDelay:a}=e;return t?r.createElement("div",{style:{textAlign:"center",color:"#fff",backgroundColor:"#fa383e",borderColor:"#fa383e",borderStyle:"solid",borderRadius:"0.25rem",borderWidth:"1px",boxSizing:"border-box",display:"block",padding:"1rem",flex:"0 0 50%",marginLeft:"25%",marginRight:"25%",marginTop:"5rem",maxWidth:"50%",width:"100%"}},r.createElement("p",null,String(t)),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},"Retry"))):a?r.createElement("div",{style:{display:"flex",justifyContent:"center",alignItems:"center",height:"100vh"}},r.createElement("svg",{id:"loader",style:{width:128,height:110,position:"absolute",top:"calc(100vh - 64%)"},viewBox:"0 0 45 45",xmlns:"http://www.w3.org/2000/svg",stroke:"#61dafb"},r.createElement("g",{fill:"none",fillRule:"evenodd",transform:"translate(1 1)",strokeWidth:"2"},r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"1.5s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"1.5s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"1.5s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"6",strokeOpacity:"0"},r.createElement("animate",{attributeName:"r",begin:"3s",dur:"3s",values:"6;22",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-opacity",begin:"3s",dur:"3s",values:"1;0",calcMode:"linear",repeatCount:"indefinite"}),r.createElement("animate",{attributeName:"stroke-width",begin:"3s",dur:"3s",values:"2;0",calcMode:"linear",repeatCount:"indefinite"})),r.createElement("circle",{cx:"22",cy:"22",r:"8"},r.createElement("animate",{attributeName:"r",begin:"0s",dur:"1.5s",values:"6;1;2;3;4;5;6",calcMode:"linear",repeatCount:"indefinite"}))))):null}var u=n(9670),d=n(226);function f(e,t){if("*"===e)return i()({loading:c,loader:()=>n.e(4972).then(n.bind(n,4972)),modules:["@theme/NotFound"],webpack:()=>[4972],render(e,t){const n=e.default;return r.createElement(d.z,{value:{plugin:{name:"native",id:"default"}}},r.createElement(n,t))}});const o=l[`${e}-${t}`],f={},p=[],g=[],m=(0,u.Z)(o);return Object.entries(m).forEach((e=>{let[t,n]=e;const r=s[n];r&&(f[t]=r[0],p.push(r[1]),g.push(r[2]))})),i().Map({loading:c,loader:f,modules:p,webpack:()=>g,render(t,n){const i=JSON.parse(JSON.stringify(o));Object.entries(t).forEach((t=>{let[n,r]=t;const a=r.default;if(!a)throw new Error(`The page component at ${e} doesn't have a default export. This makes it impossible to render anything. Consider default-exporting a React component.`);"object"!=typeof a&&"function"!=typeof a||Object.keys(r).filter((e=>"default"!==e)).forEach((e=>{a[e]=r[e]}));let o=i;const l=n.split(".");l.slice(0,-1).forEach((e=>{o=o[e]})),o[l[l.length-1]]=a}));const l=i.__comp;delete i.__comp;const s=i.__context;return delete i.__context,r.createElement(d.z,{value:s},r.createElement(l,(0,a.Z)({},i,n)))}})}var p=[{path:"/blog",component:f("/blog","b84"),exact:!0},{path:"/blog/2022/01/29/introducing-hashgreen-dex",component:f("/blog/2022/01/29/introducing-hashgreen-dex","0b0"),exact:!0},{path:"/blog/2022/02/07/weekly-update",component:f("/blog/2022/02/07/weekly-update","550"),exact:!0},{path:"/blog/2022/02/14/weekly-update",component:f("/blog/2022/02/14/weekly-update","cf0"),exact:!0},{path:"/blog/2022/03/02/weekly-update",component:f("/blog/2022/03/02/weekly-update","6b6"),exact:!0},{path:"/blog/airdrop-on-hashgreen-dex",component:f("/blog/airdrop-on-hashgreen-dex","adc"),exact:!0},{path:"/blog/archive",component:f("/blog/archive","da4"),exact:!0},{path:"/blog/blog-1-a-trusted-gateway-system",component:f("/blog/blog-1-a-trusted-gateway-system","b9e"),exact:!0},{path:"/blog/HashgreenSwap-v0.1-is-now-live-on-testnet",component:f("/blog/HashgreenSwap-v0.1-is-now-live-on-testnet","0bc"),exact:!0},{path:"/blog/hashgreenswap-v0.3-release",component:f("/blog/hashgreenswap-v0.3-release","de5"),exact:!0},{path:"/blog/join-hashgreenswap-on-testnet-v0.2-release",component:f("/blog/join-hashgreenswap-on-testnet-v0.2-release","979"),exact:!0},{path:"/blog/page/2",component:f("/blog/page/2","302"),exact:!0},{path:"/blog/page/3",component:f("/blog/page/3","c5a"),exact:!0},{path:"/blog/tags",component:f("/blog/tags","a2b"),exact:!0},{path:"/blog/tags/airdrop",component:f("/blog/tags/airdrop","1e6"),exact:!0},{path:"/blog/tags/amm",component:f("/blog/tags/amm","c8b"),exact:!0},{path:"/blog/tags/amm/page/2",component:f("/blog/tags/amm/page/2","b8f"),exact:!0},{path:"/blog/tags/api",component:f("/blog/tags/api","131"),exact:!0},{path:"/blog/tags/blockchain",component:f("/blog/tags/blockchain","2b1"),exact:!0},{path:"/blog/tags/blockchain/page/2",component:f("/blog/tags/blockchain/page/2","c77"),exact:!0},{path:"/blog/tags/blockchain/page/3",component:f("/blog/tags/blockchain/page/3","2fe"),exact:!0},{path:"/blog/tags/cat",component:f("/blog/tags/cat","abf"),exact:!0},{path:"/blog/tags/chia",component:f("/blog/tags/chia","e1c"),exact:!0},{path:"/blog/tags/chia/page/2",component:f("/blog/tags/chia/page/2","51d"),exact:!0},{path:"/blog/tags/chia/page/3",component:f("/blog/tags/chia/page/3","f14"),exact:!0},{path:"/blog/tags/chialisp",component:f("/blog/tags/chialisp","d0e"),exact:!0},{path:"/blog/tags/computer-system-design",component:f("/blog/tags/computer-system-design","999"),exact:!0},{path:"/blog/tags/cryptocurrency",component:f("/blog/tags/cryptocurrency","2eb"),exact:!0},{path:"/blog/tags/cryptocurrency/page/2",component:f("/blog/tags/cryptocurrency/page/2","baa"),exact:!0},{path:"/blog/tags/cryptocurrency/page/3",component:f("/blog/tags/cryptocurrency/page/3","e97"),exact:!0},{path:"/blog/tags/dex",component:f("/blog/tags/dex","455"),exact:!0},{path:"/blog/tags/dex/page/2",component:f("/blog/tags/dex/page/2","a7f"),exact:!0},{path:"/blog/tags/hashgreen",component:f("/blog/tags/hashgreen","759"),exact:!0},{path:"/blog/tags/hashgreen/page/2",component:f("/blog/tags/hashgreen/page/2","9f2"),exact:!0},{path:"/blog/tags/hashgreen/page/3",component:f("/blog/tags/hashgreen/page/3","6d6"),exact:!0},{path:"/blog/tags/hashgreenswap",component:f("/blog/tags/hashgreenswap","3af"),exact:!0},{path:"/blog/tags/hoogii",component:f("/blog/tags/hoogii","324"),exact:!0},{path:"/blog/tags/i-18-n",component:f("/blog/tags/i-18-n","b0c"),exact:!0},{path:"/blog/tags/landing-page",component:f("/blog/tags/landing-page","ee3"),exact:!0},{path:"/blog/tags/market-statistics",component:f("/blog/tags/market-statistics","8ac"),exact:!0},{path:"/blog/tags/mit",component:f("/blog/tags/mit","fa4"),exact:!0},{path:"/blog/tags/mit/page/2",component:f("/blog/tags/mit/page/2","ba5"),exact:!0},{path:"/blog/tags/mit/page/3",component:f("/blog/tags/mit/page/3","7bc"),exact:!0},{path:"/blog/tags/my-orders",component:f("/blog/tags/my-orders","c9b"),exact:!0},{path:"/blog/tags/nft",component:f("/blog/tags/nft","fcb"),exact:!0},{path:"/blog/tags/offer",component:f("/blog/tags/offer","2ab"),exact:!0},{path:"/blog/tags/order-book",component:f("/blog/tags/order-book","e41"),exact:!0},{path:"/blog/tags/p-2-p",component:f("/blog/tags/p-2-p","73d"),exact:!0},{path:"/blog/tags/rwd",component:f("/blog/tags/rwd","733"),exact:!0},{path:"/blog/tags/startup",component:f("/blog/tags/startup","61d"),exact:!0},{path:"/blog/tags/startup/page/2",component:f("/blog/tags/startup/page/2","acf"),exact:!0},{path:"/blog/tags/startup/page/3",component:f("/blog/tags/startup/page/3","2a9"),exact:!0},{path:"/blog/tags/swap",component:f("/blog/tags/swap","24b"),exact:!0},{path:"/blog/tags/tech-blog",component:f("/blog/tags/tech-blog","af9"),exact:!0},{path:"/blog/tags/testnet",component:f("/blog/tags/testnet","81e"),exact:!0},{path:"/blog/tags/trading-api",component:f("/blog/tags/trading-api","f5c"),exact:!0},{path:"/blog/tags/trivia",component:f("/blog/tags/trivia","6e6"),exact:!0},{path:"/blog/tags/tutorial",component:f("/blog/tags/tutorial","314"),exact:!0},{path:"/blog/tags/update",component:f("/blog/tags/update","a37"),exact:!0},{path:"/blog/tags/update/page/2",component:f("/blog/tags/update/page/2","739"),exact:!0},{path:"/blog/tags/wallet-integration",component:f("/blog/tags/wallet-integration","9b3"),exact:!0},{path:"/blog/weekly-update-10",component:f("/blog/weekly-update-10","b97"),exact:!0},{path:"/blog/weekly-update-11",component:f("/blog/weekly-update-11","4c3"),exact:!0},{path:"/blog/weekly-update-12",component:f("/blog/weekly-update-12","365"),exact:!0},{path:"/blog/weekly-update-13",component:f("/blog/weekly-update-13","707"),exact:!0},{path:"/blog/weekly-update-14",component:f("/blog/weekly-update-14","f6f"),exact:!0},{path:"/blog/weekly-update-15",component:f("/blog/weekly-update-15","bc6"),exact:!0},{path:"/blog/weekly-update-16",component:f("/blog/weekly-update-16","afd"),exact:!0},{path:"/blog/weekly-update-17",component:f("/blog/weekly-update-17","cc8"),exact:!0},{path:"/blog/weekly-update-18",component:f("/blog/weekly-update-18","ed5"),exact:!0},{path:"/blog/weekly-update-4",component:f("/blog/weekly-update-4","484"),exact:!0},{path:"/blog/weekly-update-5",component:f("/blog/weekly-update-5","1cd"),exact:!0},{path:"/blog/weekly-update-6",component:f("/blog/weekly-update-6","4eb"),exact:!0},{path:"/blog/weekly-update-7",component:f("/blog/weekly-update-7","7f9"),exact:!0},{path:"/blog/weekly-update-8",component:f("/blog/weekly-update-8","ad9"),exact:!0},{path:"/blog/weekly-update-9",component:f("/blog/weekly-update-9","adb"),exact:!0},{path:"/",component:f("/","1e4"),routes:[{path:"/",component:f("/","f65"),exact:!0,sidebar:"sidebar"},{path:"/aggregator-program",component:f("/aggregator-program","671"),exact:!0},{path:"/category/hashgreen-dex",component:f("/category/hashgreen-dex","b1c"),exact:!0,sidebar:"sidebar"},{path:"/category/products",component:f("/category/products","d75"),exact:!0,sidebar:"sidebar"},{path:"/community",component:f("/community","1cf"),exact:!0,sidebar:"sidebar"},{path:"/dex/faq",component:f("/dex/faq","b07"),exact:!0,sidebar:"sidebar"},{path:"/dex/trading-api",component:f("/dex/trading-api","b38"),exact:!0,sidebar:"sidebar"},{path:"/exchange",component:f("/exchange","11c"),exact:!0,sidebar:"sidebar"},{path:"/features",component:f("/features","ac4"),exact:!0,sidebar:"sidebar"},{path:"/get-started",component:f("/get-started","b17"),exact:!0,sidebar:"sidebar"},{path:"/hashgreen-dao",component:f("/hashgreen-dao","fe9"),exact:!0,sidebar:"sidebar"},{path:"/how-to-test-hashgreenswap-on-testnet",component:f("/how-to-test-hashgreenswap-on-testnet","266"),exact:!0,sidebar:"sidebar"},{path:"/how-to-trade-on-hashgreenswap",component:f("/how-to-trade-on-hashgreenswap","946"),exact:!0,sidebar:"sidebar"},{path:"/liquidity-pool",component:f("/liquidity-pool","a0b"),exact:!0,sidebar:"sidebar"},{path:"/partners",component:f("/partners","627"),exact:!0,sidebar:"sidebar"},{path:"/roadmap",component:f("/roadmap","10c"),exact:!0,sidebar:"sidebar"},{path:"/token-launchpad",component:f("/token-launchpad","1b7"),exact:!0},{path:"/tokenomics",component:f("/tokenomics","b02"),exact:!0,sidebar:"sidebar"},{path:"/yield-farming",component:f("/yield-farming","d7d"),exact:!0,sidebar:"sidebar"}]},{path:"*",component:f("*")}]},8934:function(e,t,n){"use strict";n.d(t,{_:function(){return a},t:function(){return o}});var r=n(7294);const a=r.createContext(!1);function o(e){let{children:t}=e;const[n,o]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{o(!0)}),[]),r.createElement(a.Provider,{value:n},t)}},9383:function(e,t,n){"use strict";var r=n(7294),a=n(3935),o=n(3727),i=n(405),l=n(412),s=[n(4367),n(2497),n(3310),n(8320),n(6291),n(6657)],c=n(723),u=n(6550),d=n(8790);function f(e){let{children:t}=e;return r.createElement(r.Fragment,null,t)}var p=n(3117),g=n(5742),m=n(2263),h=n(4996),b=n(6668),v=n(1944),y=n(4711),w=n(9727),k=n(3320),E=n(197);function _(){const{i18n:{defaultLocale:e,localeConfigs:t}}=(0,m.Z)(),n=(0,y.l)();return r.createElement(g.Z,null,Object.entries(t).map((e=>{let[t,{htmlLang:a}]=e;return r.createElement("link",{key:t,rel:"alternate",href:n.createUrl({locale:t,fullyQualified:!0}),hrefLang:a})})),r.createElement("link",{rel:"alternate",href:n.createUrl({locale:e,fullyQualified:!0}),hrefLang:"x-default"}))}function x(e){let{permalink:t}=e;const{siteConfig:{url:n}}=(0,m.Z)(),a=function(){const{siteConfig:{url:e}}=(0,m.Z)(),{pathname:t}=(0,u.TH)();return e+(0,h.Z)(t)}(),o=t?`${n}${t}`:a;return r.createElement(g.Z,null,r.createElement("meta",{property:"og:url",content:o}),r.createElement("link",{rel:"canonical",href:o}))}function S(){const{i18n:{currentLocale:e}}=(0,m.Z)(),{metadata:t,image:n}=(0,b.L)();return r.createElement(r.Fragment,null,r.createElement(g.Z,null,r.createElement("meta",{name:"twitter:card",content:"summary_large_image"}),r.createElement("body",{className:w.h})),n&&r.createElement(v.d,{image:n}),r.createElement(x,null),r.createElement(_,null),r.createElement(E.Z,{tag:k.HX,locale:e}),r.createElement(g.Z,null,t.map(((e,t)=>r.createElement("meta",(0,p.Z)({key:t},e))))))}const C=new Map;function T(e){if(C.has(e.pathname))return{...e,pathname:C.get(e.pathname)};if((0,d.f)(c.Z,e.pathname).some((e=>{let{route:t}=e;return!0===t.exact})))return C.set(e.pathname,e.pathname),e;const t=e.pathname.trim().replace(/(?:\/index)?\.html$/,"")||"/";return C.set(e.pathname,t),{...e,pathname:t}}var L=n(8934),A=n(8940);function N(e){for(var t=arguments.length,n=new Array(t>1?t-1:0),r=1;r{var r;const a=(null==(r=t.default)?void 0:r[e])??t[e];return null==a?void 0:a(...n)}));return()=>a.forEach((e=>null==e?void 0:e()))}var P=function(e){let{children:t,location:n,previousLocation:a}=e;return(0,r.useLayoutEffect)((()=>{a!==n&&(a&&function(e){const{hash:t}=e;if(t){const e=decodeURIComponent(t.substring(1)),n=document.getElementById(e);null==n||n.scrollIntoView()}else window.scrollTo(0,0)}(n),N("onRouteDidUpdate",{previousLocation:a,location:n}))}),[a,n]),t};function O(e){const t=Array.from(new Set([e,decodeURI(e)])).map((e=>(0,d.f)(c.Z,e))).flat();return Promise.all(t.map((e=>null==e.route.component.preload?void 0:e.route.component.preload())))}class R extends r.Component{constructor(e){super(e),this.previousLocation=void 0,this.routeUpdateCleanupCb=void 0,this.previousLocation=null,this.routeUpdateCleanupCb=l.Z.canUseDOM?N("onRouteUpdate",{previousLocation:null,location:this.props.location}):()=>{},this.state={nextRouteHasLoaded:!0}}shouldComponentUpdate(e,t){if(e.location===this.props.location)return t.nextRouteHasLoaded;const n=e.location;return this.previousLocation=this.props.location,this.setState({nextRouteHasLoaded:!1}),this.routeUpdateCleanupCb=N("onRouteUpdate",{previousLocation:this.previousLocation,location:n}),O(n.pathname).then((()=>{this.routeUpdateCleanupCb(),this.setState({nextRouteHasLoaded:!0})})).catch((e=>{console.warn(e),window.location.reload()})),!1}render(){const{children:e,location:t}=this.props;return r.createElement(P,{previousLocation:this.previousLocation,location:t},r.createElement(u.AW,{location:t,render:()=>e}))}}var I=R;const M="docusaurus-base-url-issue-banner-container",D="docusaurus-base-url-issue-banner-suggestion-container",F="__DOCUSAURUS_INSERT_BASEURL_BANNER";function B(e){return`\nwindow['${F}'] = true;\n\ndocument.addEventListener('DOMContentLoaded', maybeInsertBanner);\n\nfunction maybeInsertBanner() {\n var shouldInsert = window['${F}'];\n shouldInsert && insertBanner();\n}\n\nfunction insertBanner() {\n var bannerContainer = document.getElementById('${M}');\n if (!bannerContainer) {\n return;\n }\n var bannerHtml = ${JSON.stringify(function(e){return`\n
\n

Your Docusaurus site did not load properly.

\n

A very common reason is a wrong site baseUrl configuration.

\n

Current configured baseUrl = ${e} ${"/"===e?" (default value)":""}

\n

We suggest trying baseUrl =

\n
\n`}(e)).replace(/{window[F]=!1}),[]),r.createElement(r.Fragment,null,!l.Z.canUseDOM&&r.createElement(g.Z,null,r.createElement("script",null,B(e))),r.createElement("div",{id:M}))}function U(){const{siteConfig:{baseUrl:e,baseUrlIssueBanner:t}}=(0,m.Z)(),{pathname:n}=(0,u.TH)();return t&&n===e?r.createElement(j,null):null}function z(){const{siteConfig:{favicon:e,title:t,noIndex:n},i18n:{currentLocale:a,localeConfigs:o}}=(0,m.Z)(),i=(0,h.Z)(e),{htmlLang:l,direction:s}=o[a];return r.createElement(g.Z,null,r.createElement("html",{lang:l,dir:s}),r.createElement("title",null,t),r.createElement("meta",{property:"og:title",content:t}),r.createElement("meta",{name:"viewport",content:"width=device-width, initial-scale=1.0"}),n&&r.createElement("meta",{name:"robots",content:"noindex, nofollow"}),e&&r.createElement("link",{rel:"icon",href:i}))}var $=n(4763);function Z(){const e=(0,d.H)(c.Z),t=(0,u.TH)();return r.createElement($.Z,null,r.createElement(A.M,null,r.createElement(L.t,null,r.createElement(f,null,r.createElement(z,null),r.createElement(S,null),r.createElement(U,null),r.createElement(I,{location:T(t)},e)))))}var H=n(6887);const V=function(e){try{return document.createElement("link").relList.supports(e)}catch{return!1}}("prefetch")?function(e){return new Promise(((t,n)=>{var r;if("undefined"==typeof document)return void n();const a=document.createElement("link");a.setAttribute("rel","prefetch"),a.setAttribute("href",e),a.onload=()=>t(),a.onerror=()=>n();const o=document.getElementsByTagName("head")[0]??(null==(r=document.getElementsByName("script")[0])?void 0:r.parentNode);null==o||o.appendChild(a)}))}:function(e){return new Promise(((t,n)=>{const r=new XMLHttpRequest;r.open("GET",e,!0),r.withCredentials=!0,r.onload=()=>{200===r.status?t():n()},r.send(null)}))};var G=n(9670);const W=new Set,q=new Set,Y=()=>{var e,t;return(null==(e=navigator.connection)?void 0:e.effectiveType.includes("2g"))||(null==(t=navigator.connection)?void 0:t.saveData)},K={prefetch(e){if(!(e=>!Y()&&!q.has(e)&&!W.has(e))(e))return!1;W.add(e);const t=(0,d.f)(c.Z,e).flatMap((e=>{return t=e.route.path,Object.entries(H).filter((e=>{let[n]=e;return n.replace(/-[^-]+$/,"")===t})).flatMap((e=>{let[,t]=e;return Object.values((0,G.Z)(t))}));var t}));return Promise.all(t.map((e=>{const t=n.gca(e);return t&&!t.includes("undefined")?V(t).catch((()=>{})):Promise.resolve()})))},preload(e){return!!(e=>!Y()&&!q.has(e))(e)&&(q.add(e),O(e))}};var X=Object.freeze(K);if(l.Z.canUseDOM){window.docusaurus=X;const e=a.hydrate;O(window.location.pathname).then((()=>{e(r.createElement(i.B6,null,r.createElement(o.VK,null,r.createElement(Z,null))),document.getElementById("__docusaurus"))}))}},8940:function(e,t,n){"use strict";n.d(t,{_:function(){return u},M:function(){return d}});var r=n(7294),a=n(6809),o=JSON.parse('{"docusaurus-plugin-google-gtag":{"default":{"trackingID":"G-E9PMCRRH75","anonymizeIP":false,"id":"default"}},"docusaurus-plugin-content-docs":{"default":{"path":"/","versions":[{"name":"current","label":"Next","isLast":true,"path":"/","mainDocId":"overview","docs":[{"id":"aggregator-program","path":"/aggregator-program"},{"id":"community","path":"/community","sidebar":"sidebar"},{"id":"dex/faq","path":"/dex/faq","sidebar":"sidebar"},{"id":"dex/trading-api","path":"/dex/trading-api","sidebar":"sidebar"},{"id":"exchange","path":"/exchange","sidebar":"sidebar"},{"id":"features","path":"/features","sidebar":"sidebar"},{"id":"get-started","path":"/get-started","sidebar":"sidebar"},{"id":"hashgreen-dao","path":"/hashgreen-dao","sidebar":"sidebar"},{"id":"how-to-test-hashgreenswap-on-testnet","path":"/how-to-test-hashgreenswap-on-testnet","sidebar":"sidebar"},{"id":"how-to-trade-on-hashgreenswap","path":"/how-to-trade-on-hashgreenswap","sidebar":"sidebar"},{"id":"liquidity-pool","path":"/liquidity-pool","sidebar":"sidebar"},{"id":"overview","path":"/","sidebar":"sidebar"},{"id":"partners","path":"/partners","sidebar":"sidebar"},{"id":"roadmap","path":"/roadmap","sidebar":"sidebar"},{"id":"token-launchpad","path":"/token-launchpad"},{"id":"tokenomics","path":"/tokenomics","sidebar":"sidebar"},{"id":"yield-farming","path":"/yield-farming","sidebar":"sidebar"},{"id":"/category/products","path":"/category/products","sidebar":"sidebar"},{"id":"/category/hashgreen-dex","path":"/category/hashgreen-dex","sidebar":"sidebar"}],"draftIds":[],"sidebars":{"sidebar":{"link":{"path":"/","label":"overview"}}}}],"breadcrumbs":true}}}'),i=JSON.parse('{"defaultLocale":"en","locales":["en","zh-Hant"],"path":"i18n","currentLocale":"en","localeConfigs":{"en":{"label":"English","direction":"ltr","htmlLang":"en","calendar":"gregory","path":"en"},"zh-Hant":{"label":"\u7e41\u9ad4\u4e2d\u6587","direction":"ltr","htmlLang":"zh-Hant","calendar":"gregory","path":"zh-Hant"}}}'),l=n(7529),s=JSON.parse('{"docusaurusVersion":"2.2.0","siteVersion":"0.0.0","pluginVersions":{"docusaurus-plugin-content-docs":{"type":"package","name":"@docusaurus/plugin-content-docs","version":"2.2.0"},"docusaurus-plugin-content-blog":{"type":"package","name":"@docusaurus/plugin-content-blog","version":"2.2.0"},"docusaurus-plugin-content-pages":{"type":"package","name":"@docusaurus/plugin-content-pages","version":"2.2.0"},"docusaurus-plugin-google-analytics":{"type":"package","name":"@docusaurus/plugin-google-analytics","version":"2.2.0"},"docusaurus-plugin-sitemap":{"type":"package","name":"@docusaurus/plugin-sitemap","version":"2.2.0"},"docusaurus-theme-classic":{"type":"package","name":"@docusaurus/theme-classic","version":"2.2.0"},"docusaurus-plugin-google-gtag":{"type":"package","name":"@docusaurus/plugin-google-gtag","version":"2.2.0"}}}');const c={siteConfig:a.Z,siteMetadata:s,globalData:o,i18n:i,codeTranslations:l},u=r.createContext(c);function d(e){let{children:t}=e;return r.createElement(u.Provider,{value:c},t)}},4763:function(e,t,n){"use strict";n.d(t,{Z:function(){return u}});var r=n(7294),a=n(412),o=n(5742),i=n(7676);function l(e){let{error:t,tryAgain:n}=e;return r.createElement("div",{style:{display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",height:"50vh",width:"100%",fontSize:"20px"}},r.createElement("h1",null,"This page crashed."),r.createElement("p",null,t.message),r.createElement("button",{type:"button",onClick:n},"Try again"))}function s(e){let{error:t,tryAgain:n}=e;return r.createElement(u,{fallback:()=>r.createElement(l,{error:t,tryAgain:n})},r.createElement(o.Z,null,r.createElement("title",null,"Page Error")),r.createElement(i.Z,null,r.createElement(l,{error:t,tryAgain:n})))}const c=e=>r.createElement(s,e);class u extends r.Component{constructor(e){super(e),this.state={error:null}}componentDidCatch(e){a.Z.canUseDOM&&this.setState({error:e})}render(){const{children:e}=this.props,{error:t}=this.state;if(t){const e={error:t,tryAgain:()=>this.setState({error:null})};return(this.props.fallback??c)(e)}return e??null}}},412:function(e,t){"use strict";const n="undefined"!=typeof window&&"document"in window&&"createElement"in window.document,r={canUseDOM:n,canUseEventListeners:n&&("addEventListener"in window||"attachEvent"in window),canUseIntersectionObserver:n&&"IntersectionObserver"in window,canUseViewport:n&&"screen"in window};t.Z=r},5742:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a=n(405);function o(e){return r.createElement(a.ql,e)}},9960:function(e,t,n){"use strict";n.d(t,{Z:function(){return p}});var r=n(3117),a=n(7294),o=n(3727),i=n(8780),l=n(2263),s=n(3919),c=n(412);const u=a.createContext({collectLink:()=>{}});var d=n(4996);function f(e,t){var n;let{isNavLink:f,to:p,href:g,activeClassName:m,isActive:h,"data-noBrokenLinkCheck":b,autoAddBaseUrl:v=!0,...y}=e;const{siteConfig:{trailingSlash:w,baseUrl:k}}=(0,l.Z)(),{withBaseUrl:E}=(0,d.C)(),_=(0,a.useContext)(u),x=(0,a.useRef)(null);(0,a.useImperativeHandle)(t,(()=>x.current));const S=p||g;const C=(0,s.Z)(S),T=null==S?void 0:S.replace("pathname://","");let L=void 0!==T?(A=T,v&&(e=>e.startsWith("/"))(A)?E(A):A):void 0;var A;L&&C&&(L=(0,i.applyTrailingSlash)(L,{trailingSlash:w,baseUrl:k}));const N=(0,a.useRef)(!1),P=f?o.OL:o.rU,O=c.Z.canUseIntersectionObserver,R=(0,a.useRef)(),I=()=>{N.current||null==L||(window.docusaurus.preload(L),N.current=!0)};(0,a.useEffect)((()=>(!O&&C&&null!=L&&window.docusaurus.prefetch(L),()=>{O&&R.current&&R.current.disconnect()})),[R,L,O,C]);const M=(null==(n=L)?void 0:n.startsWith("#"))??!1,D=!L||!C||M;return D||b||_.collectLink(L),D?a.createElement("a",(0,r.Z)({ref:x,href:L},S&&!C&&{target:"_blank",rel:"noopener noreferrer"},y)):a.createElement(P,(0,r.Z)({},y,{onMouseEnter:I,onTouchStart:I,innerRef:e=>{x.current=e,O&&e&&C&&(R.current=new window.IntersectionObserver((t=>{t.forEach((t=>{e===t.target&&(t.isIntersecting||t.intersectionRatio>0)&&(R.current.unobserve(e),R.current.disconnect(),null!=L&&window.docusaurus.prefetch(L))}))})),R.current.observe(e))},to:L},f&&{isActive:h,activeClassName:m}))}var p=a.forwardRef(f)},1875:function(e,t){"use strict";t.Z=()=>null},5999:function(e,t,n){"use strict";n.d(t,{Z:function(){return s},I:function(){return l}});var r=n(7294);function a(e,t){const n=e.split(/(\{\w+\})/).map(((e,n)=>{if(n%2==1){const n=null==t?void 0:t[e.slice(1,-1)];if(void 0!==n)return n}return e}));return n.some((e=>(0,r.isValidElement)(e)))?n.map(((e,t)=>(0,r.isValidElement)(e)?r.cloneElement(e,{key:t}):e)).filter((e=>""!==e)):n.join("")}var o=n(7529);function i(e){let{id:t,message:n}=e;if(void 0===t&&void 0===n)throw new Error("Docusaurus translation declarations must have at least a translation id or a default translation message");return o[t??n]??n??t}function l(e,t){let{message:n,id:r}=e;return a(i({message:n,id:r}),t)}function s(e){let{children:t,id:n,values:o}=e;if(t&&"string"!=typeof t)throw console.warn("Illegal children",t),new Error("The Docusaurus component only accept simple string values");const l=i({message:t,id:n});return r.createElement(r.Fragment,null,a(l,o))}},9935:function(e,t,n){"use strict";n.d(t,{m:function(){return r}});const r="default"},3919:function(e,t,n){"use strict";function r(e){return/^(?:\w*:|\/\/)/.test(e)}function a(e){return void 0!==e&&!r(e)}n.d(t,{Z:function(){return a},b:function(){return r}})},4996:function(e,t,n){"use strict";n.d(t,{C:function(){return o},Z:function(){return i}});var r=n(2263),a=n(3919);function o(){const{siteConfig:{baseUrl:e,url:t}}=(0,r.Z)();return{withBaseUrl:(n,r)=>function(e,t,n,r){let{forcePrependBaseUrl:o=!1,absolute:i=!1}=void 0===r?{}:r;if(!n||n.startsWith("#")||(0,a.b)(n))return n;if(o)return t+n.replace(/^\//,"");if(n===t.replace(/\/$/,""))return t;const l=n.startsWith(t)?n:t+n.replace(/^\//,"");return i?e+l:l}(t,e,n,r)}}function i(e,t){void 0===t&&(t={});const{withBaseUrl:n}=o();return n(e,t)}},2263:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a=n(8940);function o(){return(0,r.useContext)(a._)}},2389:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a=n(8934);function o(){return(0,r.useContext)(a._)}},9670:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});function r(e){const t={};return function e(n,r){Object.entries(n).forEach((n=>{let[a,o]=n;const i=r?`${r}.${a}`:a;var l;"object"==typeof(l=o)&&l&&Object.keys(l).length>0?e(o,i):t[i]=o}))}(e),t}},226:function(e,t,n){"use strict";n.d(t,{_:function(){return a},z:function(){return o}});var r=n(7294);const a=r.createContext(null);function o(e){let{children:t,value:n}=e;const o=r.useContext(a),i=(0,r.useMemo)((()=>function(e){let{parent:t,value:n}=e;if(!t){if(!n)throw new Error("Unexpected: no Docusaurus route context found");if(!("plugin"in n))throw new Error("Unexpected: Docusaurus topmost route context has no `plugin` attribute");return n}const r={...t.data,...null==n?void 0:n.data};return{plugin:t.plugin,data:r}}({parent:o,value:n})),[o,n]);return r.createElement(a.Provider,{value:i},t)}},143:function(e,t,n){"use strict";n.d(t,{Iw:function(){return m},gA:function(){return f},_r:function(){return u},Jo:function(){return h},zh:function(){return d},yW:function(){return g},gB:function(){return p}});var r=n(6550),a=n(2263),o=n(9935);function i(e,t){void 0===t&&(t={});const n=function(){const{globalData:e}=(0,a.Z)();return e}()[e];if(!n&&t.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin.`);return n}const l=e=>e.versions.find((e=>e.isLast));function s(e,t){const n=function(e,t){const n=l(e);return[...e.versions.filter((e=>e!==n)),n].find((e=>!!(0,r.LX)(t,{path:e.path,exact:!1,strict:!1})))}(e,t),a=null==n?void 0:n.docs.find((e=>!!(0,r.LX)(t,{path:e.path,exact:!0,strict:!1})));return{activeVersion:n,activeDoc:a,alternateDocVersions:a?function(t){const n={};return e.versions.forEach((e=>{e.docs.forEach((r=>{r.id===t&&(n[e.name]=r)}))})),n}(a.id):{}}}const c={},u=()=>i("docusaurus-plugin-content-docs")??c,d=e=>function(e,t,n){void 0===t&&(t=o.m),void 0===n&&(n={});const r=i(e),a=null==r?void 0:r[t];if(!a&&n.failfast)throw new Error(`Docusaurus plugin global data not found for "${e}" plugin with id "${t}".`);return a}("docusaurus-plugin-content-docs",e,{failfast:!0});function f(e){void 0===e&&(e={});const t=u(),{pathname:n}=(0,r.TH)();return function(e,t,n){void 0===n&&(n={});const a=Object.entries(e).sort(((e,t)=>t[1].path.localeCompare(e[1].path))).find((e=>{let[,n]=e;return!!(0,r.LX)(t,{path:n.path,exact:!1,strict:!1})})),o=a?{pluginId:a[0],pluginData:a[1]}:void 0;if(!o&&n.failfast)throw new Error(`Can't find active docs plugin for "${t}" pathname, while it was expected to be found. Maybe you tried to use a docs feature that can only be used on a docs-related page? Existing docs plugin paths are: ${Object.values(e).map((e=>e.path)).join(", ")}`);return o}(t,n,e)}function p(e){return d(e).versions}function g(e){const t=d(e);return l(t)}function m(e){const t=d(e),{pathname:n}=(0,r.TH)();return s(t,n)}function h(e){const t=d(e),{pathname:n}=(0,r.TH)();return function(e,t){const n=l(e);return{latestDocSuggestion:s(e,t).alternateDocVersions[n.name],latestVersionSuggestion:n}}(t,n)}},4367:function(e,t,n){"use strict";n.r(t);const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||(window.ga("set","page",t.pathname+t.search+t.hash),window.ga("send","pageview"))}};t.default=r},6657:function(e,t,n){"use strict";n.r(t);const r={onRouteDidUpdate(e){let{location:t,previousLocation:n}=e;!n||t.pathname===n.pathname&&t.search===n.search&&t.hash===n.hash||setTimeout((()=>{window.gtag("event","page_view",{page_title:document.title,page_location:window.location.href,page_path:t.pathname+t.search+t.hash})}))}};t.default=r},8320:function(e,t,n){"use strict";n.r(t);var r=n(4865),a=n.n(r);a().configure({showSpinner:!1});const o={onRouteUpdate(e){let{location:t,previousLocation:n}=e;if(n&&t.pathname!==n.pathname){const e=window.setTimeout((()=>{a().start()}),200);return()=>window.clearTimeout(e)}},onRouteDidUpdate(){a().done()}};t.default=o},3310:function(e,t,n){"use strict";n.r(t);var r=n(1205),a=n(6809);!function(e){const{themeConfig:{prism:t}}=a.Z,{additionalLanguages:r}=t;globalThis.Prism=e,r.forEach((e=>{n(4961)(`./prism-${e}`)})),delete globalThis.Prism}(r.Z)},9471:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a="iconExternalLink_nPIU";function o(e){let{width:t=13.5,height:n=13.5}=e;return r.createElement("svg",{width:t,height:n,"aria-hidden":"true",viewBox:"0 0 24 24",className:a},r.createElement("path",{fill:"currentColor",d:"M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"}))}},7676:function(e,t,n){"use strict";n.d(t,{Z:function(){return ct}});var r=n(7294),a=n(4334),o=n(4763),i=n(1944),l=n(3117),s=n(6550),c=n(5999),u=n(5936);const d="docusaurus_skipToContent_fallback";function f(e){e.setAttribute("tabindex","-1"),e.focus(),e.removeAttribute("tabindex")}function p(){const e=(0,r.useRef)(null),{action:t}=(0,s.k6)(),n=(0,r.useCallback)((e=>{e.preventDefault();const t=document.querySelector("main:first-of-type")??document.getElementById(d);t&&f(t)}),[]);return(0,u.S)((n=>{let{location:r}=n;e.current&&!r.hash&&"PUSH"===t&&f(e.current)})),{containerRef:e,onClick:n}}const g=(0,c.I)({id:"theme.common.skipToMainContent",description:"The skip to content label used for accessibility, allowing to rapidly navigate to main content with keyboard tab/enter navigation",message:"Skip to main content"});function m(e){const t=e.children??g,{containerRef:n,onClick:a}=p();return r.createElement("div",{ref:n,role:"region","aria-label":g},r.createElement("a",(0,l.Z)({},e,{href:`#${d}`,onClick:a}),t))}var h=n(5281),b=n(9727),v="skipToContent_fXgn";function y(){return r.createElement(m,{className:v})}var w=n(6668),k=n(9689);function E(e){let{width:t=21,height:n=21,color:a="currentColor",strokeWidth:o=1.2,className:i,...s}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 15 15",width:t,height:n},s),r.createElement("g",{stroke:a,strokeWidth:o},r.createElement("path",{d:"M.75.75l13.5 13.5M14.25.75L.75 14.25"})))}var _="closeButton_CVFx";function x(e){return r.createElement("button",(0,l.Z)({type:"button","aria-label":(0,c.I)({id:"theme.AnnouncementBar.closeButtonAriaLabel",message:"Close",description:"The ARIA label for close button of announcement bar"})},e,{className:(0,a.Z)("clean-btn close",_,e.className)}),r.createElement(E,{width:14,height:14,strokeWidth:3.1}))}var S="content_knG7";function C(e){const{announcementBar:t}=(0,w.L)(),{content:n}=t;return r.createElement("div",(0,l.Z)({},e,{className:(0,a.Z)(S,e.className),dangerouslySetInnerHTML:{__html:n}}))}var T="announcementBar_mb4j",L="announcementBarPlaceholder_vyr4",A="announcementBarClose_gvF7",N="announcementBarContent_xLdY";function P(){const{announcementBar:e}=(0,w.L)(),{isActive:t,close:n}=(0,k.nT)();if(!t)return null;const{backgroundColor:a,textColor:o,isCloseable:i}=e;return r.createElement("div",{className:T,style:{backgroundColor:a,color:o},role:"banner"},i&&r.createElement("div",{className:L}),r.createElement(C,{className:N}),i&&r.createElement(x,{onClick:n,className:A}))}var O=n(2961),R=n(2466);var I=n(902),M=n(3102);const D=r.createContext(null);function F(e){let{children:t}=e;const n=function(){const e=(0,O.e)(),t=(0,M.HY)(),[n,a]=(0,r.useState)(!1),o=null!==t.component,i=(0,I.D9)(o);return(0,r.useEffect)((()=>{o&&!i&&a(!0)}),[o,i]),(0,r.useEffect)((()=>{o?e.shown||a(!0):a(!1)}),[e.shown,o]),(0,r.useMemo)((()=>[n,a]),[n])}();return r.createElement(D.Provider,{value:n},t)}function B(e){if(e.component){const t=e.component;return r.createElement(t,e.props)}}function j(){const e=(0,r.useContext)(D);if(!e)throw new I.i6("NavbarSecondaryMenuDisplayProvider");const[t,n]=e,a=(0,r.useCallback)((()=>n(!1)),[n]),o=(0,M.HY)();return(0,r.useMemo)((()=>({shown:t,hide:a,content:B(o)})),[a,o,t])}function U(e){let{header:t,primaryMenu:n,secondaryMenu:o}=e;const{shown:i}=j();return r.createElement("div",{className:"navbar-sidebar"},t,r.createElement("div",{className:(0,a.Z)("navbar-sidebar__items",{"navbar-sidebar__items--show-secondary":i})},r.createElement("div",{className:"navbar-sidebar__item menu"},n),r.createElement("div",{className:"navbar-sidebar__item menu"},o)))}var z=n(2949),$=n(2389);function Z(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M12,9c1.65,0,3,1.35,3,3s-1.35,3-3,3s-3-1.35-3-3S10.35,9,12,9 M12,7c-2.76,0-5,2.24-5,5s2.24,5,5,5s5-2.24,5-5 S14.76,7,12,7L12,7z M2,13l2,0c0.55,0,1-0.45,1-1s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S1.45,13,2,13z M20,13l2,0c0.55,0,1-0.45,1-1 s-0.45-1-1-1l-2,0c-0.55,0-1,0.45-1,1S19.45,13,20,13z M11,2v2c0,0.55,0.45,1,1,1s1-0.45,1-1V2c0-0.55-0.45-1-1-1S11,1.45,11,2z M11,20v2c0,0.55,0.45,1,1,1s1-0.45,1-1v-2c0-0.55-0.45-1-1-1C11.45,19,11,19.45,11,20z M5.99,4.58c-0.39-0.39-1.03-0.39-1.41,0 c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0s0.39-1.03,0-1.41L5.99,4.58z M18.36,16.95 c-0.39-0.39-1.03-0.39-1.41,0c-0.39,0.39-0.39,1.03,0,1.41l1.06,1.06c0.39,0.39,1.03,0.39,1.41,0c0.39-0.39,0.39-1.03,0-1.41 L18.36,16.95z M19.42,5.99c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06c-0.39,0.39-0.39,1.03,0,1.41 s1.03,0.39,1.41,0L19.42,5.99z M7.05,18.36c0.39-0.39,0.39-1.03,0-1.41c-0.39-0.39-1.03-0.39-1.41,0l-1.06,1.06 c-0.39,0.39-0.39,1.03,0,1.41s1.03,0.39,1.41,0L7.05,18.36z"}))}function H(e){return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:24,height:24},e),r.createElement("path",{fill:"currentColor",d:"M9.37,5.51C9.19,6.15,9.1,6.82,9.1,7.5c0,4.08,3.32,7.4,7.4,7.4c0.68,0,1.35-0.09,1.99-0.27C17.45,17.19,14.93,19,12,19 c-3.86,0-7-3.14-7-7C5,9.07,6.81,6.55,9.37,5.51z M12,3c-4.97,0-9,4.03-9,9s4.03,9,9,9s9-4.03,9-9c0-0.46-0.04-0.92-0.1-1.36 c-0.98,1.37-2.58,2.26-4.4,2.26c-2.98,0-5.4-2.42-5.4-5.4c0-1.81,0.89-3.42,2.26-4.4C12.92,3.04,12.46,3,12,3L12,3z"}))}var V={toggle:"toggle_vylO",toggleButton:"toggleButton_gllP",darkToggleIcon:"darkToggleIcon_wfgR",lightToggleIcon:"lightToggleIcon_pyhR",toggleButtonDisabled:"toggleButtonDisabled_aARS"};function G(e){let{className:t,value:n,onChange:o}=e;const i=(0,$.Z)(),l=(0,c.I)({message:"Switch between dark and light mode (currently {mode})",id:"theme.colorToggle.ariaLabel",description:"The ARIA label for the navbar color mode toggle"},{mode:"dark"===n?(0,c.I)({message:"dark mode",id:"theme.colorToggle.ariaLabel.mode.dark",description:"The name for the dark color mode"}):(0,c.I)({message:"light mode",id:"theme.colorToggle.ariaLabel.mode.light",description:"The name for the light color mode"})});return r.createElement("div",{className:(0,a.Z)(V.toggle,t)},r.createElement("button",{className:(0,a.Z)("clean-btn",V.toggleButton,!i&&V.toggleButtonDisabled),type:"button",onClick:()=>o("dark"===n?"light":"dark"),disabled:!i,title:l,"aria-label":l,"aria-live":"polite"},r.createElement(Z,{className:(0,a.Z)(V.toggleIcon,V.lightToggleIcon)}),r.createElement(H,{className:(0,a.Z)(V.toggleIcon,V.darkToggleIcon)})))}var W=r.memo(G);function q(e){let{className:t}=e;const n=(0,w.L)().colorMode.disableSwitch,{colorMode:a,setColorMode:o}=(0,z.I)();return n?null:r.createElement(W,{className:t,value:a,onChange:o})}var Y=n(1327);function K(){return r.createElement(Y.Z,{className:"navbar__brand",imageClassName:"navbar__logo",titleClassName:"navbar__title text--truncate"})}function X(){const e=(0,O.e)();return r.createElement("button",{type:"button","aria-label":(0,c.I)({id:"theme.docs.sidebar.closeSidebarButtonAriaLabel",message:"Close navigation bar",description:"The ARIA label for close button of mobile sidebar"}),className:"clean-btn navbar-sidebar__close",onClick:()=>e.toggle()},r.createElement(E,{color:"var(--ifm-color-emphasis-600)"}))}function Q(){return r.createElement("div",{className:"navbar-sidebar__brand"},r.createElement(K,null),r.createElement(q,{className:"margin-right--md"}),r.createElement(X,null))}var J=n(9960),ee=n(4996),te=n(3919);function ne(e,t){return void 0!==e&&void 0!==t&&new RegExp(e,"gi").test(t)}var re=n(9471);function ae(e){let{activeBasePath:t,activeBaseRegex:n,to:a,href:o,label:i,html:s,isDropdownLink:c,prependBaseUrlToHref:u,...d}=e;const f=(0,ee.Z)(a),p=(0,ee.Z)(t),g=(0,ee.Z)(o,{forcePrependBaseUrl:!0}),m=i&&o&&!(0,te.Z)(o),h=s?{dangerouslySetInnerHTML:{__html:s}}:{children:r.createElement(r.Fragment,null,i,m&&r.createElement(re.Z,c&&{width:12,height:12}))};return o?r.createElement(J.Z,(0,l.Z)({href:u?g:o},d,h)):r.createElement(J.Z,(0,l.Z)({to:f,isNavLink:!0},(t||n)&&{isActive:(e,t)=>n?ne(n,t.pathname):t.pathname.startsWith(p)},d,h))}function oe(e){let{className:t,isDropdownItem:n=!1,...o}=e;const i=r.createElement(ae,(0,l.Z)({className:(0,a.Z)(n?"dropdown__link":"navbar__item navbar__link",t),isDropdownLink:n},o));return n?r.createElement("li",null,i):i}function ie(e){let{className:t,isDropdownItem:n,...o}=e;return r.createElement("li",{className:"menu__list-item"},r.createElement(ae,(0,l.Z)({className:(0,a.Z)("menu__link",t)},o)))}function le(e){let{mobile:t=!1,position:n,...a}=e;const o=t?ie:oe;return r.createElement(o,(0,l.Z)({},a,{activeClassName:a.activeClassName??(t?"menu__link--active":"navbar__link--active")}))}var se=n(6043),ce=n(8596),ue=n(2263);function de(e,t){return e.some((e=>function(e,t){return!!(0,ce.Mg)(e.to,t)||!!ne(e.activeBaseRegex,t)||!(!e.activeBasePath||!t.startsWith(e.activeBasePath))}(e,t)))}function fe(e){let{items:t,position:n,className:o,onClick:i,...s}=e;const c=(0,r.useRef)(null),[u,d]=(0,r.useState)(!1);return(0,r.useEffect)((()=>{const e=e=>{c.current&&!c.current.contains(e.target)&&d(!1)};return document.addEventListener("mousedown",e),document.addEventListener("touchstart",e),()=>{document.removeEventListener("mousedown",e),document.removeEventListener("touchstart",e)}}),[c]),r.createElement("div",{ref:c,className:(0,a.Z)("navbar__item","dropdown","dropdown--hoverable",{"dropdown--right":"right"===n,"dropdown--show":u})},r.createElement(ae,(0,l.Z)({"aria-haspopup":"true","aria-expanded":u,role:"button",href:s.to?void 0:"#",className:(0,a.Z)("navbar__link",o)},s,{onClick:s.to?void 0:e=>e.preventDefault(),onKeyDown:e=>{"Enter"===e.key&&(e.preventDefault(),d(!u))}}),s.children??s.label),r.createElement("ul",{className:"dropdown__menu"},t.map(((e,n)=>r.createElement(Ce,(0,l.Z)({isDropdownItem:!0,onKeyDown:e=>{if(n===t.length-1&&"Tab"===e.key){e.preventDefault(),d(!1);const t=c.current.nextElementSibling;if(t){(t instanceof HTMLAnchorElement?t:t.querySelector("a")).focus()}}},activeClassName:"dropdown__link--active"},e,{key:n}))))))}function pe(e){let{items:t,className:n,position:o,onClick:i,...c}=e;const u=function(){const{siteConfig:{baseUrl:e}}=(0,ue.Z)(),{pathname:t}=(0,s.TH)();return t.replace(e,"/")}(),d=de(t,u),{collapsed:f,toggleCollapsed:p,setCollapsed:g}=(0,se.u)({initialState:()=>!d});return(0,r.useEffect)((()=>{d&&g(!d)}),[u,d,g]),r.createElement("li",{className:(0,a.Z)("menu__list-item",{"menu__list-item--collapsed":f})},r.createElement(ae,(0,l.Z)({role:"button",className:(0,a.Z)("menu__link menu__link--sublist menu__link--sublist-caret",n)},c,{onClick:e=>{e.preventDefault(),p()}}),c.children??c.label),r.createElement(se.z,{lazy:!0,as:"ul",className:"menu__list",collapsed:f},t.map(((e,t)=>r.createElement(Ce,(0,l.Z)({mobile:!0,isDropdownItem:!0,onClick:i,activeClassName:"menu__link--active"},e,{key:t}))))))}function ge(e){let{mobile:t=!1,...n}=e;const a=t?pe:fe;return r.createElement(a,n)}var me=n(4711);function he(e){let{width:t=20,height:n=20,...a}=e;return r.createElement("svg",(0,l.Z)({viewBox:"0 0 24 24",width:t,height:n,"aria-hidden":!0},a),r.createElement("path",{fill:"currentColor",d:"M12.87 15.07l-2.54-2.51.03-.03c1.74-1.94 2.98-4.17 3.71-6.53H17V4h-7V2H8v2H1v1.99h11.17C11.5 7.92 10.44 9.75 9 11.35 8.07 10.32 7.3 9.19 6.69 8h-2c.73 1.63 1.73 3.17 2.98 4.56l-5.09 5.02L4 19l5-5 3.11 3.11.76-2.04zM18.5 10h-2L12 22h2l1.12-3h4.75L21 22h2l-4.5-12zm-2.62 7l1.62-4.33L19.12 17h-3.24z"}))}var be="iconLanguage_nlXk";var ve=n(1875),ye="searchBox_ZlJk";function we(e){let{children:t,className:n}=e;return r.createElement("div",{className:(0,a.Z)(n,ye)},t)}var ke=n(143),Ee=n(3438);var _e=n(373);const xe=e=>e.docs.find((t=>t.id===e.mainDocId));var Se={default:le,localeDropdown:function(e){let{mobile:t,dropdownItemsBefore:n,dropdownItemsAfter:a,...o}=e;const{i18n:{currentLocale:i,locales:u,localeConfigs:d}}=(0,ue.Z)(),f=(0,me.l)(),{search:p,hash:g}=(0,s.TH)(),m=[...n,...u.map((e=>{const n=`${`pathname://${f.createUrl({locale:e,fullyQualified:!1})}`}${p}${g}`;return{label:d[e].label,lang:d[e].htmlLang,to:n,target:"_self",autoAddBaseUrl:!1,className:e===i?t?"menu__link--active":"dropdown__link--active":""}})),...a],h=t?(0,c.I)({message:"Languages",id:"theme.navbar.mobileLanguageDropdown.label",description:"The label for the mobile language switcher dropdown"}):d[i].label;return r.createElement(ge,(0,l.Z)({},o,{mobile:t,label:r.createElement(r.Fragment,null,r.createElement(he,{className:be}),h),items:m}))},search:function(e){let{mobile:t,className:n}=e;return t?null:r.createElement(we,{className:n},r.createElement(ve.Z,null))},dropdown:ge,html:function(e){let{value:t,className:n,mobile:o=!1,isDropdownItem:i=!1}=e;const l=i?"li":"div";return r.createElement(l,{className:(0,a.Z)({navbar__item:!o&&!i,"menu__list-item":o},n),dangerouslySetInnerHTML:{__html:t}})},doc:function(e){let{docId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ke.Iw)(a),s=(0,Ee.vY)(t,a);return null===s?null:r.createElement(le,(0,l.Z)({exact:!0},o,{isActive:()=>(null==i?void 0:i.path)===s.path||!(null==i||!i.sidebar)&&i.sidebar===s.sidebar,label:n??s.id,to:s.path}))},docSidebar:function(e){let{sidebarId:t,label:n,docsPluginId:a,...o}=e;const{activeDoc:i}=(0,ke.Iw)(a),s=(0,Ee.oz)(t,a).link;if(!s)throw new Error(`DocSidebarNavbarItem: Sidebar with ID "${t}" doesn't have anything to be linked to.`);return r.createElement(le,(0,l.Z)({exact:!0},o,{isActive:()=>(null==i?void 0:i.sidebar)===t,label:n??s.label,to:s.path}))},docsVersion:function(e){let{label:t,to:n,docsPluginId:a,...o}=e;const i=(0,Ee.lO)(a)[0],s=t??i.label,c=n??(e=>e.docs.find((t=>t.id===e.mainDocId)))(i).path;return r.createElement(le,(0,l.Z)({},o,{label:s,to:c}))},docsVersionDropdown:function(e){let{mobile:t,docsPluginId:n,dropdownActiveClassDisabled:a,dropdownItemsBefore:o,dropdownItemsAfter:i,...u}=e;const{search:d,hash:f}=(0,s.TH)(),p=(0,ke.Iw)(n),g=(0,ke.gB)(n),{savePreferredVersionName:m}=(0,_e.J)(n),h=[...o,...g.map((e=>{const t=p.alternateDocVersions[e.name]??xe(e);return{label:e.label,to:`${t.path}${d}${f}`,isActive:()=>e===p.activeVersion,onClick:()=>m(e.name)}})),...i],b=(0,Ee.lO)(n)[0],v=t&&h.length>1?(0,c.I)({id:"theme.navbar.mobileVersionsDropdown.label",message:"Versions",description:"The label for the navbar versions dropdown on mobile view"}):b.label,y=t&&h.length>1?void 0:xe(b).path;return h.length<=1?r.createElement(le,(0,l.Z)({},u,{mobile:t,label:v,to:y,isActive:a?()=>!1:void 0})):r.createElement(ge,(0,l.Z)({},u,{mobile:t,label:v,to:y,items:h,isActive:a?()=>!1:void 0}))}};function Ce(e){let{type:t,...n}=e;const a=function(e,t){return e&&"default"!==e?e:"items"in t?"dropdown":"default"}(t,n),o=Se[a];if(!o)throw new Error(`No NavbarItem component found for type "${t}".`);return r.createElement(o,n)}function Te(){const e=(0,O.e)(),t=(0,w.L)().navbar.items;return r.createElement("ul",{className:"menu__list"},t.map(((t,n)=>r.createElement(Ce,(0,l.Z)({mobile:!0},t,{onClick:()=>e.toggle(),key:n})))))}function Le(e){return r.createElement("button",(0,l.Z)({},e,{type:"button",className:"clean-btn navbar-sidebar__back"}),r.createElement(c.Z,{id:"theme.navbar.mobileSidebarSecondaryMenu.backButtonLabel",description:"The label of the back button to return to main menu, inside the mobile navbar sidebar secondary menu (notably used to display the docs sidebar)"},"\u2190 Back to main menu"))}function Ae(){const e=0===(0,w.L)().navbar.items.length,t=j();return r.createElement(r.Fragment,null,!e&&r.createElement(Le,{onClick:()=>t.hide()}),t.content)}function Ne(){const e=(0,O.e)();var t;return void 0===(t=e.shown)&&(t=!0),(0,r.useEffect)((()=>(document.body.style.overflow=t?"hidden":"visible",()=>{document.body.style.overflow="visible"})),[t]),e.shouldRender?r.createElement(U,{header:r.createElement(Q,null),primaryMenu:r.createElement(Te,null),secondaryMenu:r.createElement(Ae,null)}):null}var Pe="navbarHideable_m1mJ",Oe="navbarHidden_jGov";function Re(e){return r.createElement("div",(0,l.Z)({role:"presentation"},e,{className:(0,a.Z)("navbar-sidebar__backdrop",e.className)}))}function Ie(e){let{children:t}=e;const{navbar:{hideOnScroll:n,style:o}}=(0,w.L)(),i=(0,O.e)(),{navbarRef:l,isNavbarVisible:s}=function(e){const[t,n]=(0,r.useState)(e),a=(0,r.useRef)(!1),o=(0,r.useRef)(0),i=(0,r.useCallback)((e=>{null!==e&&(o.current=e.getBoundingClientRect().height)}),[]);return(0,R.RF)(((t,r)=>{let{scrollY:i}=t;if(!e)return;if(i=l?n(!1):i+c{if(!e)return;const r=t.location.hash;if(r?document.getElementById(r.substring(1)):void 0)return a.current=!0,void n(!1);n(!0)})),{navbarRef:i,isNavbarVisible:t}}(n);return r.createElement("nav",{ref:l,className:(0,a.Z)("navbar","navbar--fixed-top",n&&[Pe,!s&&Oe],{"navbar--dark":"dark"===o,"navbar--primary":"primary"===o,"navbar-sidebar--show":i.shown})},t,r.createElement(Re,{onClick:i.toggle}),r.createElement(Ne,null))}function Me(e){let{width:t=30,height:n=30,className:a,...o}=e;return r.createElement("svg",(0,l.Z)({className:a,width:t,height:n,viewBox:"0 0 30 30","aria-hidden":"true"},o),r.createElement("path",{stroke:"currentColor",strokeLinecap:"round",strokeMiterlimit:"10",strokeWidth:"2",d:"M4 7h22M4 15h22M4 23h22"}))}function De(){const{toggle:e,shown:t}=(0,O.e)();return r.createElement("button",{onClick:e,"aria-label":(0,c.I)({id:"theme.docs.sidebar.toggleSidebarButtonAriaLabel",message:"Toggle navigation bar",description:"The ARIA label for hamburger menu button of mobile navigation"}),"aria-expanded":t,className:"navbar__toggle clean-btn",type:"button"},r.createElement(Me,null))}var Fe="colorModeToggle_DEke";function Be(e){let{items:t}=e;return r.createElement(r.Fragment,null,t.map(((e,t)=>r.createElement(Ce,(0,l.Z)({},e,{key:t})))))}function je(e){let{left:t,right:n}=e;return r.createElement("div",{className:"navbar__inner"},r.createElement("div",{className:"navbar__items"},t),r.createElement("div",{className:"navbar__items navbar__items--right"},n))}function Ue(){const e=(0,O.e)(),t=(0,w.L)().navbar.items,[n,a]=function(e){function t(e){return"left"===(e.position??"right")}return[e.filter(t),e.filter((e=>!t(e)))]}(t),o=t.find((e=>"search"===e.type));return r.createElement(je,{left:r.createElement(r.Fragment,null,!e.disabled&&r.createElement(De,null),r.createElement(K,null),r.createElement(Be,{items:n})),right:r.createElement(r.Fragment,null,r.createElement(Be,{items:a}),r.createElement(q,{className:Fe}),!o&&r.createElement(we,null,r.createElement(ve.Z,null)))})}function ze(){return r.createElement(Ie,null,r.createElement(Ue,null))}function $e(e){let{item:t}=e;const{to:n,href:a,label:o,prependBaseUrlToHref:i,...s}=t,c=(0,ee.Z)(n),u=(0,ee.Z)(a,{forcePrependBaseUrl:!0});return r.createElement(J.Z,(0,l.Z)({className:"footer__link-item"},a?{href:i?u:a}:{to:c},s),o,a&&!(0,te.Z)(a)&&r.createElement(re.Z,null))}function Ze(e){let{item:t}=e;return t.html?r.createElement("li",{className:"footer__item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement("li",{key:t.href??t.to,className:"footer__item"},r.createElement($e,{item:t}))}function He(e){let{column:t}=e;return r.createElement("div",{className:"col footer__col"},r.createElement("div",{className:"footer__title"},t.title),r.createElement("ul",{className:"footer__items clean-list"},t.items.map(((e,t)=>r.createElement(Ze,{key:t,item:e})))))}function Ve(e){let{columns:t}=e;return r.createElement("div",{className:"row footer__links"},t.map(((e,t)=>r.createElement(He,{key:t,column:e}))))}function Ge(){return r.createElement("span",{className:"footer__link-separator"},"\xb7")}function We(e){let{item:t}=e;return t.html?r.createElement("span",{className:"footer__link-item",dangerouslySetInnerHTML:{__html:t.html}}):r.createElement($e,{item:t})}function qe(e){let{links:t}=e;return r.createElement("div",{className:"footer__links text--center"},r.createElement("div",{className:"footer__links"},t.map(((e,n)=>r.createElement(r.Fragment,{key:n},r.createElement(We,{item:e}),t.length!==n+1&&r.createElement(Ge,null))))))}function Ye(e){let{links:t}=e;return function(e){return"title"in e[0]}(t)?r.createElement(Ve,{columns:t}):r.createElement(qe,{links:t})}var Ke=n(941),Xe="footerLogoLink_BH7S";function Qe(e){let{logo:t}=e;const{withBaseUrl:n}=(0,ee.C)(),o={light:n(t.src),dark:n(t.srcDark??t.src)};return r.createElement(Ke.Z,{className:(0,a.Z)("footer__logo",t.className),alt:t.alt,sources:o,width:t.width,height:t.height,style:t.style})}function Je(e){let{logo:t}=e;return t.href?r.createElement(J.Z,{href:t.href,className:Xe,target:t.target},r.createElement(Qe,{logo:t})):r.createElement(Qe,{logo:t})}function et(e){let{copyright:t}=e;return r.createElement("div",{className:"footer__copyright",dangerouslySetInnerHTML:{__html:t}})}function tt(e){let{style:t,links:n,logo:o,copyright:i}=e;return r.createElement("footer",{className:(0,a.Z)("footer",{"footer--dark":"dark"===t})},r.createElement("div",{className:"container container-fluid"},n,(o||i)&&r.createElement("div",{className:"footer__bottom text--center"},o&&r.createElement("div",{className:"margin-bottom--sm"},o),i)))}function nt(){const{footer:e}=(0,w.L)();if(!e)return null;const{copyright:t,links:n,logo:a,style:o}=e;return r.createElement(tt,{style:o,links:n&&n.length>0&&r.createElement(Ye,{links:n}),logo:a&&r.createElement(Je,{logo:a}),copyright:t&&r.createElement(et,{copyright:t})})}var rt=r.memo(nt),at=n(7094);const ot=(0,I.Qc)([z.S,k.pl,at.z,R.OC,_e.L5,i.VC,function(e){let{children:t}=e;return r.createElement(M.n2,null,r.createElement(O.M,null,r.createElement(F,null,t)))}]);function it(e){let{children:t}=e;return r.createElement(ot,null,t)}function lt(e){let{error:t,tryAgain:n}=e;return r.createElement("main",{className:"container margin-vert--xl"},r.createElement("div",{className:"row"},r.createElement("div",{className:"col col--6 col--offset-3"},r.createElement("h1",{className:"hero__title"},r.createElement(c.Z,{id:"theme.ErrorPageContent.title",description:"The title of the fallback page when the page crashed"},"This page crashed.")),r.createElement("p",null,t.message),r.createElement("div",null,r.createElement("button",{type:"button",onClick:n},r.createElement(c.Z,{id:"theme.ErrorPageContent.tryAgain",description:"The label of the button to try again when the page crashed"},"Try again"))))))}var st="mainWrapper_z2l0";function ct(e){const{children:t,noFooter:n,wrapperClassName:l,title:s,description:c}=e;return(0,b.t)(),r.createElement(it,null,r.createElement(i.d,{title:s,description:c}),r.createElement(y,null),r.createElement(P,null),r.createElement(ze,null),r.createElement("div",{id:d,className:(0,a.Z)(h.k.wrapper.main,st,l)},r.createElement(o.Z,{fallback:e=>r.createElement(lt,e)},t)),!n&&r.createElement(rt,null))}},1327:function(e,t,n){"use strict";n.d(t,{Z:function(){return d}});var r=n(3117),a=n(7294),o=n(9960),i=n(4996),l=n(2263),s=n(6668),c=n(941);function u(e){let{logo:t,alt:n,imageClassName:r}=e;const o={light:(0,i.Z)(t.src),dark:(0,i.Z)(t.srcDark||t.src)},l=a.createElement(c.Z,{className:t.className,sources:o,height:t.height,width:t.width,alt:n,style:t.style});return r?a.createElement("div",{className:r},l):l}function d(e){const{siteConfig:{title:t}}=(0,l.Z)(),{navbar:{title:n,logo:c}}=(0,s.L)(),{imageClassName:d,titleClassName:f,...p}=e,g=(0,i.Z)((null==c?void 0:c.href)||"/"),m=n?"":t,h=(null==c?void 0:c.alt)??m;return a.createElement(o.Z,(0,r.Z)({to:g},p,(null==c?void 0:c.target)&&{target:c.target}),c&&a.createElement(u,{logo:c,alt:h,imageClassName:d}),null!=n&&a.createElement("b",{className:f},n))}},197:function(e,t,n){"use strict";n.d(t,{Z:function(){return o}});var r=n(7294),a=n(5742);function o(e){let{locale:t,version:n,tag:o}=e;const i=t;return r.createElement(a.Z,null,t&&r.createElement("meta",{name:"docusaurus_locale",content:t}),n&&r.createElement("meta",{name:"docusaurus_version",content:n}),o&&r.createElement("meta",{name:"docusaurus_tag",content:o}),i&&r.createElement("meta",{name:"docsearch:language",content:i}),n&&r.createElement("meta",{name:"docsearch:version",content:n}),o&&r.createElement("meta",{name:"docsearch:docusaurus_tag",content:o}))}},941:function(e,t,n){"use strict";n.d(t,{Z:function(){return c}});var r=n(3117),a=n(7294),o=n(4334),i=n(2389),l=n(2949),s={themedImage:"themedImage_ToTc","themedImage--light":"themedImage--light_HNdA","themedImage--dark":"themedImage--dark_i4oU"};function c(e){const t=(0,i.Z)(),{colorMode:n}=(0,l.I)(),{sources:c,className:u,alt:d,...f}=e,p=t?"dark"===n?["dark"]:["light"]:["light","dark"];return a.createElement(a.Fragment,null,p.map((e=>a.createElement("img",(0,r.Z)({key:e,src:c[e],alt:d,className:(0,o.Z)(s.themedImage,s[`themedImage--${e}`],u)},f)))))}},6043:function(e,t,n){"use strict";n.d(t,{u:function(){return i},z:function(){return g}});var r=n(3117),a=n(7294),o=n(412);function i(e){let{initialState:t}=e;const[n,r]=(0,a.useState)(t??!1),o=(0,a.useCallback)((()=>{r((e=>!e))}),[]);return{collapsed:n,setCollapsed:r,toggleCollapsed:o}}const l={display:"none",overflow:"hidden",height:"0px"},s={display:"block",overflow:"visible",height:"auto"};function c(e,t){const n=t?l:s;e.style.display=n.display,e.style.overflow=n.overflow,e.style.height=n.height}function u(e){let{collapsibleRef:t,collapsed:n,animation:r}=e;const o=(0,a.useRef)(!1);(0,a.useEffect)((()=>{const e=t.current;function a(){const t=e.scrollHeight,n=(null==r?void 0:r.duration)??function(e){const t=e/36;return Math.round(10*(4+15*t**.25+t/5))}(t);return{transition:`height ${n}ms ${(null==r?void 0:r.easing)??"ease-in-out"}`,height:`${t}px`}}function i(){const t=a();e.style.transition=t.transition,e.style.height=t.height}if(!o.current)return c(e,n),void(o.current=!0);return e.style.willChange="height",function(){const t=requestAnimationFrame((()=>{n?(i(),requestAnimationFrame((()=>{e.style.height=l.height,e.style.overflow=l.overflow}))):(e.style.display="block",requestAnimationFrame((()=>{i()})))}));return()=>cancelAnimationFrame(t)}()}),[t,n,r])}function d(e){if(!o.Z.canUseDOM)return e?l:s}function f(e){let{as:t="div",collapsed:n,children:r,animation:o,onCollapseTransitionEnd:i,className:l,disableSSRStyle:s}=e;const f=(0,a.useRef)(null);return u({collapsibleRef:f,collapsed:n,animation:o}),a.createElement(t,{ref:f,style:s?void 0:d(n),onTransitionEnd:e=>{"height"===e.propertyName&&(c(f.current,n),null==i||i(n))},className:l},r)}function p(e){let{collapsed:t,...n}=e;const[o,i]=(0,a.useState)(!t),[l,s]=(0,a.useState)(t);return(0,a.useLayoutEffect)((()=>{t||i(!0)}),[t]),(0,a.useLayoutEffect)((()=>{o&&s(t)}),[o,t]),o?a.createElement(f,(0,r.Z)({},n,{collapsed:l})):null}function g(e){let{lazy:t,...n}=e;const r=t?p:f;return a.createElement(r,n)}},9689:function(e,t,n){"use strict";n.d(t,{nT:function(){return g},pl:function(){return p}});var r=n(7294),a=n(2389),o=n(12),i=n(902),l=n(6668);const s=(0,o.W)("docusaurus.announcement.dismiss"),c=(0,o.W)("docusaurus.announcement.id"),u=()=>"true"===s.get(),d=e=>s.set(String(e)),f=r.createContext(null);function p(e){let{children:t}=e;const n=function(){const{announcementBar:e}=(0,l.L)(),t=(0,a.Z)(),[n,o]=(0,r.useState)((()=>!!t&&u()));(0,r.useEffect)((()=>{o(u())}),[]);const i=(0,r.useCallback)((()=>{d(!0),o(!0)}),[]);return(0,r.useEffect)((()=>{if(!e)return;const{id:t}=e;let n=c.get();"annoucement-bar"===n&&(n="announcement-bar");const r=t!==n;c.set(t),r&&d(!1),!r&&u()||o(!1)}),[e]),(0,r.useMemo)((()=>({isActive:!!e&&!n,close:i})),[e,n,i])}();return r.createElement(f.Provider,{value:n},t)}function g(){const e=(0,r.useContext)(f);if(!e)throw new i.i6("AnnouncementBarProvider");return e}},2949:function(e,t,n){"use strict";n.d(t,{I:function(){return h},S:function(){return m}});var r=n(7294),a=n(412),o=n(902),i=n(12),l=n(6668);const s=r.createContext(void 0),c="theme",u=(0,i.W)(c),d="light",f="dark",p=e=>e===f?f:d;function g(){const{colorMode:{defaultMode:e,disableSwitch:t,respectPrefersColorScheme:n}}=(0,l.L)(),[o,i]=(0,r.useState)((e=>a.Z.canUseDOM?p(document.documentElement.getAttribute("data-theme")):p(e))(e));(0,r.useEffect)((()=>{t&&u.del()}),[t]);const s=(0,r.useCallback)((function(t,r){void 0===r&&(r={});const{persist:a=!0}=r;t?(i(t),a&&(e=>{u.set(p(e))})(t)):(i(n?window.matchMedia("(prefers-color-scheme: dark)").matches?f:d:e),u.del())}),[n,e]);(0,r.useEffect)((()=>{document.documentElement.setAttribute("data-theme",p(o))}),[o]),(0,r.useEffect)((()=>{if(t)return;const e=e=>{if(e.key!==c)return;const t=u.get();null!==t&&s(p(t))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)}),[t,s]);const g=(0,r.useRef)(!1);return(0,r.useEffect)((()=>{if(t&&!n)return;const e=window.matchMedia("(prefers-color-scheme: dark)"),r=()=>{window.matchMedia("print").matches||g.current?g.current=window.matchMedia("print").matches:s(null)};return e.addListener(r),()=>e.removeListener(r)}),[s,t,n]),(0,r.useMemo)((()=>({colorMode:o,setColorMode:s,get isDarkTheme(){return o===f},setLightTheme(){s(d)},setDarkTheme(){s(f)}})),[o,s])}function m(e){let{children:t}=e;const n=g();return r.createElement(s.Provider,{value:n},t)}function h(){const e=(0,r.useContext)(s);if(null==e)throw new o.i6("ColorModeProvider","Please see https://docusaurus.io/docs/api/themes/configuration#use-color-mode.");return e}},373:function(e,t,n){"use strict";n.d(t,{J:function(){return y},L5:function(){return b}});var r=n(7294),a=n(143),o=n(9935),i=n(6668),l=n(3438),s=n(902),c=n(12);const u=e=>`docs-preferred-version-${e}`,d=(e,t,n)=>{(0,c.W)(u(e),{persistence:t}).set(n)},f=(e,t)=>(0,c.W)(u(e),{persistence:t}).get(),p=(e,t)=>{(0,c.W)(u(e),{persistence:t}).del()};const g=r.createContext(null);function m(){const e=(0,a._r)(),t=(0,i.L)().docs.versionPersistence,n=(0,r.useMemo)((()=>Object.keys(e)),[e]),[o,l]=(0,r.useState)((()=>(e=>Object.fromEntries(e.map((e=>[e,{preferredVersionName:null}]))))(n)));(0,r.useEffect)((()=>{l(function(e){let{pluginIds:t,versionPersistence:n,allDocsData:r}=e;function a(e){const t=f(e,n);return r[e].versions.some((e=>e.name===t))?{preferredVersionName:t}:(p(e,n),{preferredVersionName:null})}return Object.fromEntries(t.map((e=>[e,a(e)])))}({allDocsData:e,versionPersistence:t,pluginIds:n}))}),[e,t,n]);return[o,(0,r.useMemo)((()=>({savePreferredVersion:function(e,n){d(e,t,n),l((t=>({...t,[e]:{preferredVersionName:n}})))}})),[t])]}function h(e){let{children:t}=e;const n=m();return r.createElement(g.Provider,{value:n},t)}function b(e){let{children:t}=e;return l.cE?r.createElement(h,null,t):r.createElement(r.Fragment,null,t)}function v(){const e=(0,r.useContext)(g);if(!e)throw new s.i6("DocsPreferredVersionContextProvider");return e}function y(e){void 0===e&&(e=o.m);const t=(0,a.zh)(e),[n,i]=v(),{preferredVersionName:l}=n[e];return{preferredVersion:t.versions.find((e=>e.name===l))??null,savePreferredVersionName:(0,r.useCallback)((t=>{i.savePreferredVersion(e,t)}),[i,e])}}},1116:function(e,t,n){"use strict";n.d(t,{V:function(){return s},b:function(){return l}});var r=n(7294),a=n(902);const o=Symbol("EmptyContext"),i=r.createContext(o);function l(e){let{children:t,name:n,items:a}=e;const o=(0,r.useMemo)((()=>n&&a?{name:n,items:a}:null),[n,a]);return r.createElement(i.Provider,{value:o},t)}function s(){const e=(0,r.useContext)(i);if(e===o)throw new a.i6("DocsSidebarProvider");return e}},4477:function(e,t,n){"use strict";n.d(t,{E:function(){return l},q:function(){return i}});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t,version:n}=e;return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(null===e)throw new a.i6("DocsVersionProvider");return e}},2961:function(e,t,n){"use strict";n.d(t,{M:function(){return f},e:function(){return p}});var r=n(7294),a=n(3102),o=n(7524),i=n(6550),l=n(902);function s(e){!function(e){const t=(0,i.k6)(),n=(0,l.zX)(e);(0,r.useEffect)((()=>t.block(((e,t)=>n(e,t)))),[t,n])}(((t,n)=>{if("POP"===n)return e(t,n)}))}var c=n(6668);const u=r.createContext(void 0);function d(){const e=function(){const e=(0,a.HY)(),{items:t}=(0,c.L)().navbar;return 0===t.length&&!e.component}(),t=(0,o.i)(),n=!e&&"mobile"===t,[i,l]=(0,r.useState)(!1);s((()=>{if(i)return l(!1),!1}));const u=(0,r.useCallback)((()=>{l((e=>!e))}),[]);return(0,r.useEffect)((()=>{"desktop"===t&&l(!1)}),[t]),(0,r.useMemo)((()=>({disabled:e,shouldRender:n,toggle:u,shown:i})),[e,n,u,i])}function f(e){let{children:t}=e;const n=d();return r.createElement(u.Provider,{value:n},t)}function p(){const e=r.useContext(u);if(void 0===e)throw new l.i6("NavbarMobileSidebarProvider");return e}},3102:function(e,t,n){"use strict";n.d(t,{HY:function(){return l},Zo:function(){return s},n2:function(){return i}});var r=n(7294),a=n(902);const o=r.createContext(null);function i(e){let{children:t}=e;const n=(0,r.useState)({component:null,props:null});return r.createElement(o.Provider,{value:n},t)}function l(){const e=(0,r.useContext)(o);if(!e)throw new a.i6("NavbarSecondaryMenuContentProvider");return e[0]}function s(e){let{component:t,props:n}=e;const i=(0,r.useContext)(o);if(!i)throw new a.i6("NavbarSecondaryMenuContentProvider");const[,l]=i,s=(0,a.Ql)(n);return(0,r.useEffect)((()=>{l({component:t,props:s})}),[l,t,s]),(0,r.useEffect)((()=>()=>l({component:null,props:null})),[l]),null}},7094:function(e,t,n){"use strict";n.d(t,{U:function(){return c},z:function(){return s}});var r=n(7294),a=n(12),o=n(902);const i="docusaurus.tab.",l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const[e,t]=(0,r.useState)({}),n=(0,r.useCallback)(((e,t)=>{(0,a.W)(`docusaurus.tab.${e}`).set(t)}),[]);(0,r.useEffect)((()=>{try{const e={};(0,a._)().forEach((t=>{if(t.startsWith(i)){const n=t.substring(i.length);e[n]=(0,a.W)(t).get()}})),t(e)}catch(e){console.error(e)}}),[]);const o=(0,r.useCallback)(((e,r)=>{t((t=>({...t,[e]:r}))),n(e,r)}),[n]);return(0,r.useMemo)((()=>({tabGroupChoices:e,setTabGroupChoices:o})),[e,o])}();return r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new o.i6("TabGroupChoiceProvider");return e}},9727:function(e,t,n){"use strict";n.d(t,{h:function(){return a},t:function(){return o}});var r=n(7294);const a="navigation-with-keyboard";function o(){(0,r.useEffect)((()=>{function e(e){"keydown"===e.type&&"Tab"===e.key&&document.body.classList.add(a),"mousedown"===e.type&&document.body.classList.remove(a)}return document.addEventListener("keydown",e),document.addEventListener("mousedown",e),()=>{document.body.classList.remove(a),document.removeEventListener("keydown",e),document.removeEventListener("mousedown",e)}}),[])}},7524:function(e,t,n){"use strict";n.d(t,{i:function(){return c}});var r=n(7294),a=n(412);const o="desktop",i="mobile",l="ssr";function s(){return a.Z.canUseDOM?window.innerWidth>996?o:i:l}function c(){const[e,t]=(0,r.useState)((()=>s()));return(0,r.useEffect)((()=>{function e(){t(s())}return window.addEventListener("resize",e),()=>{window.removeEventListener("resize",e),clearTimeout(undefined)}}),[]),e}},5281:function(e,t,n){"use strict";n.d(t,{k:function(){return r}});const r={page:{blogListPage:"blog-list-page",blogPostPage:"blog-post-page",blogTagsListPage:"blog-tags-list-page",blogTagPostListPage:"blog-tags-post-list-page",docsDocPage:"docs-doc-page",docsTagsListPage:"docs-tags-list-page",docsTagDocListPage:"docs-tags-doc-list-page",mdxPage:"mdx-page"},wrapper:{main:"main-wrapper",blogPages:"blog-wrapper",docsPages:"docs-wrapper",mdxPages:"mdx-wrapper"},common:{editThisPage:"theme-edit-this-page",lastUpdated:"theme-last-updated",backToTopButton:"theme-back-to-top-button",codeBlock:"theme-code-block",admonition:"theme-admonition",admonitionType:e=>`theme-admonition-${e}`},layout:{},docs:{docVersionBanner:"theme-doc-version-banner",docVersionBadge:"theme-doc-version-badge",docBreadcrumbs:"theme-doc-breadcrumbs",docMarkdown:"theme-doc-markdown",docTocMobile:"theme-doc-toc-mobile",docTocDesktop:"theme-doc-toc-desktop",docFooter:"theme-doc-footer",docFooterTagsRow:"theme-doc-footer-tags-row",docFooterEditMetaRow:"theme-doc-footer-edit-meta-row",docSidebarContainer:"theme-doc-sidebar-container",docSidebarMenu:"theme-doc-sidebar-menu",docSidebarItemCategory:"theme-doc-sidebar-item-category",docSidebarItemLink:"theme-doc-sidebar-item-link",docSidebarItemCategoryLevel:e=>`theme-doc-sidebar-item-category-level-${e}`,docSidebarItemLinkLevel:e=>`theme-doc-sidebar-item-link-level-${e}`},blog:{}}},3438:function(e,t,n){"use strict";n.d(t,{MN:function(){return x},Wl:function(){return g},_F:function(){return b},cE:function(){return f},hI:function(){return _},jA:function(){return m},lO:function(){return w},oz:function(){return k},s1:function(){return y},vY:function(){return E},xz:function(){return p}});var r=n(7294),a=n(6550),o=n(8790),i=n(143),l=n(373),s=n(4477),c=n(1116),u=n(7392),d=n(8596);const f=!!i._r;function p(e){const t=(0,s.E)();if(!e)return;const n=t.docs[e];if(!n)throw new Error(`no version doc found by id=${e}`);return n}function g(e){if(e.href)return e.href;for(const t of e.items){if("link"===t.type)return t.href;if("category"===t.type){const e=g(t);if(e)return e}}}function m(){const{pathname:e}=(0,a.TH)(),t=(0,c.V)();if(!t)throw new Error("Unexpected: cant find current sidebar in context");const n=v({sidebarItems:t.items,pathname:e,onlyCategories:!0}).slice(-1)[0];if(!n)throw new Error(`${e} is not associated with a category. useCurrentSidebarCategory() should only be used on category index pages.`);return n}const h=(e,t)=>void 0!==e&&(0,d.Mg)(e,t);function b(e,t){return"link"===e.type?h(e.href,t):"category"===e.type&&(h(e.href,t)||((e,t)=>e.some((e=>b(e,t))))(e.items,t))}function v(e){let{sidebarItems:t,pathname:n,onlyCategories:r=!1}=e;const a=[];return function e(t){for(const o of t)if("category"===o.type&&((0,d.Mg)(o.href,n)||e(o.items))||"link"===o.type&&(0,d.Mg)(o.href,n)){return r&&"category"!==o.type||a.unshift(o),!0}return!1}(t),a}function y(){var e;const t=(0,c.V)(),{pathname:n}=(0,a.TH)();return!1!==(null==(e=(0,i.gA)())?void 0:e.pluginData.breadcrumbs)&&t?v({sidebarItems:t.items,pathname:n}):null}function w(e){const{activeVersion:t}=(0,i.Iw)(e),{preferredVersion:n}=(0,l.J)(e),a=(0,i.yW)(e);return(0,r.useMemo)((()=>(0,u.j)([t,n,a].filter(Boolean))),[t,n,a])}function k(e,t){const n=w(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.sidebars?Object.entries(e.sidebars):[])),r=t.find((t=>t[0]===e));if(!r)throw new Error(`Can't find any sidebar with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\n Available sidebar ids are:\n - ${Object.keys(t).join("\n- ")}`);return r[1]}),[e,n])}function E(e,t){const n=w(t);return(0,r.useMemo)((()=>{const t=n.flatMap((e=>e.docs)),r=t.find((t=>t.id===e));if(!r){if(n.flatMap((e=>e.draftIds)).includes(e))return null;throw new Error(`DocNavbarItem: couldn't find any doc with id "${e}" in version${n.length>1?"s":""} ${n.map((e=>e.name)).join(", ")}".\nAvailable doc ids are:\n- ${(0,u.j)(t.map((e=>e.id))).join("\n- ")}`)}return r}),[e,n])}function _(e){let{route:t,versionMetadata:n}=e;const r=(0,a.TH)(),i=t.routes,l=i.find((e=>(0,a.LX)(r.pathname,e)));if(!l)return null;const s=l.sidebar,c=s?n.docsSidebars[s]:void 0;return{docElement:(0,o.H)(i),sidebarName:s,sidebarItems:c}}function x(e){return e.filter((e=>"category"!==e.type||!!g(e)))}},7392:function(e,t,n){"use strict";function r(e,t){return void 0===t&&(t=(e,t)=>e===t),e.filter(((n,r)=>e.findIndex((e=>t(e,n)))!==r))}function a(e){return Array.from(new Set(e))}n.d(t,{j:function(){return a},l:function(){return r}})},1944:function(e,t,n){"use strict";n.d(t,{FG:function(){return f},d:function(){return u},VC:function(){return p}});var r=n(7294),a=n(7459),o=n(5742),i=n(226);function l(){const e=r.useContext(i._);if(!e)throw new Error("Unexpected: no Docusaurus route context found");return e}var s=n(4996),c=n(2263);function u(e){let{title:t,description:n,keywords:a,image:i,children:l}=e;const u=function(e){const{siteConfig:t}=(0,c.Z)(),{title:n,titleDelimiter:r}=t;return null!=e&&e.trim().length?`${e.trim()} ${r} ${n}`:n}(t),{withBaseUrl:d}=(0,s.C)(),f=i?d(i,{absolute:!0}):void 0;return r.createElement(o.Z,null,t&&r.createElement("title",null,u),t&&r.createElement("meta",{property:"og:title",content:u}),n&&r.createElement("meta",{name:"description",content:n}),n&&r.createElement("meta",{property:"og:description",content:n}),a&&r.createElement("meta",{name:"keywords",content:Array.isArray(a)?a.join(","):a}),f&&r.createElement("meta",{property:"og:image",content:f}),f&&r.createElement("meta",{name:"twitter:image",content:f}),l)}const d=r.createContext(void 0);function f(e){let{className:t,children:n}=e;const i=r.useContext(d),l=(0,a.Z)(i,t);return r.createElement(d.Provider,{value:l},r.createElement(o.Z,null,r.createElement("html",{className:l})),n)}function p(e){let{children:t}=e;const n=l(),o=`plugin-${n.plugin.name.replace(/docusaurus-(?:plugin|theme)-(?:content-)?/gi,"")}`;const i=`plugin-id-${n.plugin.id}`;return r.createElement(f,{className:(0,a.Z)(o,i)},t)}},902:function(e,t,n){"use strict";n.d(t,{D9:function(){return i},Qc:function(){return c},Ql:function(){return s},i6:function(){return l},zX:function(){return o}});var r=n(7294);const a=n(412).Z.canUseDOM?r.useLayoutEffect:r.useEffect;function o(e){const t=(0,r.useRef)(e);return a((()=>{t.current=e}),[e]),(0,r.useCallback)((function(){return t.current(...arguments)}),[])}function i(e){const t=(0,r.useRef)();return a((()=>{t.current=e})),t.current}class l extends Error{constructor(e,t){var n,r,a;super(),this.name="ReactContextError",this.message=`Hook ${(null==(n=this.stack)||null==(r=n.split("\n")[1])||null==(a=r.match(/at (?:\w+\.)?(?\w+)/))?void 0:a.groups.name)??""} is called outside the <${e}>. ${t??""}`}}function s(e){const t=Object.entries(e);return t.sort(((e,t)=>e[0].localeCompare(t[0]))),(0,r.useMemo)((()=>e),t.flat())}function c(e){return t=>{let{children:n}=t;return r.createElement(r.Fragment,null,e.reduceRight(((e,t)=>r.createElement(t,null,e)),n))}}},8596:function(e,t,n){"use strict";n.d(t,{Mg:function(){return i},Ns:function(){return l}});var r=n(7294),a=n(723),o=n(2263);function i(e,t){const n=e=>{var t;return null==(t=!e||e.endsWith("/")?e:`${e}/`)?void 0:t.toLowerCase()};return n(e)===n(t)}function l(){const{baseUrl:e}=(0,o.Z)().siteConfig;return(0,r.useMemo)((()=>function(e){let{baseUrl:t,routes:n}=e;function r(e){return e.path===t&&!0===e.exact}function a(e){return e.path===t&&!e.exact}return function e(t){if(0===t.length)return;return t.find(r)||e(t.filter(a).flatMap((e=>e.routes??[])))}(n)}({routes:a.Z,baseUrl:e})),[e])}},2466:function(e,t,n){"use strict";n.d(t,{Ct:function(){return p},OC:function(){return s},RF:function(){return d},o5:function(){return f}});var r=n(7294),a=n(412),o=n(2389),i=n(902);const l=r.createContext(void 0);function s(e){let{children:t}=e;const n=function(){const e=(0,r.useRef)(!0);return(0,r.useMemo)((()=>({scrollEventsEnabledRef:e,enableScrollEvents:()=>{e.current=!0},disableScrollEvents:()=>{e.current=!1}})),[])}();return r.createElement(l.Provider,{value:n},t)}function c(){const e=(0,r.useContext)(l);if(null==e)throw new i.i6("ScrollControllerProvider");return e}const u=()=>a.Z.canUseDOM?{scrollX:window.pageXOffset,scrollY:window.pageYOffset}:null;function d(e,t){void 0===t&&(t=[]);const{scrollEventsEnabledRef:n}=c(),a=(0,r.useRef)(u()),o=(0,i.zX)(e);(0,r.useEffect)((()=>{const e=()=>{if(!n.current)return;const e=u();o(e,a.current),a.current=e},t={passive:!0};return e(),window.addEventListener("scroll",e,t),()=>window.removeEventListener("scroll",e,t)}),[o,n,...t])}function f(){const e=c(),t=function(){const e=(0,r.useRef)({elem:null,top:0}),t=(0,r.useCallback)((t=>{e.current={elem:t,top:t.getBoundingClientRect().top}}),[]),n=(0,r.useCallback)((()=>{const{current:{elem:t,top:n}}=e;if(!t)return{restored:!1};const r=t.getBoundingClientRect().top-n;return r&&window.scrollBy({left:0,top:r}),e.current={elem:null,top:0},{restored:0!==r}}),[]);return(0,r.useMemo)((()=>({save:t,restore:n})),[n,t])}(),n=(0,r.useRef)(void 0),a=(0,r.useCallback)((r=>{t.save(r),e.disableScrollEvents(),n.current=()=>{const{restored:r}=t.restore();if(n.current=void 0,r){const t=()=>{e.enableScrollEvents(),window.removeEventListener("scroll",t)};window.addEventListener("scroll",t)}else e.enableScrollEvents()}}),[e,t]);return(0,r.useLayoutEffect)((()=>{null==n.current||n.current()})),{blockElementScrollPositionUntilNextRender:a}}function p(){const e=(0,r.useRef)(null),t=(0,o.Z)()&&"smooth"===getComputedStyle(document.documentElement).scrollBehavior;return{startScroll:n=>{e.current=t?function(e){return window.scrollTo({top:e,behavior:"smooth"}),()=>{}}(n):function(e){let t=null;const n=document.documentElement.scrollTop>e;return function r(){const a=document.documentElement.scrollTop;(n&&a>e||!n&&at&&cancelAnimationFrame(t)}(n)},cancelScroll:()=>null==e.current?void 0:e.current()}}},3320:function(e,t,n){"use strict";n.d(t,{HX:function(){return r},os:function(){return a}});n(2263);const r="default";function a(e,t){return`docs-${e}-${t}`}},12:function(e,t,n){"use strict";n.d(t,{W:function(){return l},_:function(){return s}});const r="localStorage";function a(e){if(void 0===e&&(e=r),"undefined"==typeof window)throw new Error("Browser storage is not available on Node.js/Docusaurus SSR process.");if("none"===e)return null;try{return window[e]}catch(n){return t=n,o||(console.warn("Docusaurus browser storage is not available.\nPossible reasons: running Docusaurus in an iframe, in an incognito browser session, or using too strict browser privacy settings.",t),o=!0),null}var t}let o=!1;const i={get:()=>null,set:()=>{},del:()=>{}};function l(e,t){if("undefined"==typeof window)return function(e){function t(){throw new Error(`Illegal storage API usage for storage key "${e}".\nDocusaurus storage APIs are not supposed to be called on the server-rendering process.\nPlease only call storage APIs in effects and event handlers.`)}return{get:t,set:t,del:t}}(e);const n=a(null==t?void 0:t.persistence);return null===n?i:{get:()=>{try{return n.getItem(e)}catch(t){return console.error(`Docusaurus storage error, can't get key=${e}`,t),null}},set:t=>{try{n.setItem(e,t)}catch(r){console.error(`Docusaurus storage error, can't set ${e}=${t}`,r)}},del:()=>{try{n.removeItem(e)}catch(t){console.error(`Docusaurus storage error, can't delete key=${e}`,t)}}}}function s(e){void 0===e&&(e=r);const t=a(e);if(!t)return[];const n=[];for(let r=0;r{n&&t!==n&&i({location:t,previousLocation:n})}),[i,t,n])}},6668:function(e,t,n){"use strict";n.d(t,{L:function(){return a}});var r=n(2263);function a(){return(0,r.Z)().siteConfig.themeConfig}},8802:function(e,t){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){const{trailingSlash:n,baseUrl:r}=t;if(e.startsWith("#"))return e;if(void 0===n)return e;const[a]=e.split(/[#?]/),o="/"===a||a===r?a:(i=a,n?function(e){return e.endsWith("/")?e:`${e}/`}(i):function(e){return e.endsWith("/")?e.slice(0,-1):e}(i));var i;return e.replace(a,o)}},8780:function(e,t,n){"use strict";var r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.applyTrailingSlash=t.blogPostContainerID=void 0,t.blogPostContainerID="post-content";var a=n(8802);Object.defineProperty(t,"applyTrailingSlash",{enumerable:!0,get:function(){return r(a).default}})},9318:function(e,t,n){"use strict";n.d(t,{lX:function(){return w},q_:function(){return C},ob:function(){return p},PP:function(){return L},Ep:function(){return f}});var r=n(3117);function a(e){return"/"===e.charAt(0)}function o(e,t){for(var n=t,r=n+1,a=e.length;r=0;f--){var p=i[f];"."===p?o(i,f):".."===p?(o(i,f),d++):d&&(o(i,f),d--)}if(!c)for(;d--;d)i.unshift("..");!c||""===i[0]||i[0]&&a(i[0])||i.unshift("");var g=i.join("/");return n&&"/"!==g.substr(-1)&&(g+="/"),g},l=n(2177);function s(e){return"/"===e.charAt(0)?e:"/"+e}function c(e){return"/"===e.charAt(0)?e.substr(1):e}function u(e,t){return function(e,t){return 0===e.toLowerCase().indexOf(t.toLowerCase())&&-1!=="/?#".indexOf(e.charAt(t.length))}(e,t)?e.substr(t.length):e}function d(e){return"/"===e.charAt(e.length-1)?e.slice(0,-1):e}function f(e){var t=e.pathname,n=e.search,r=e.hash,a=t||"/";return n&&"?"!==n&&(a+="?"===n.charAt(0)?n:"?"+n),r&&"#"!==r&&(a+="#"===r.charAt(0)?r:"#"+r),a}function p(e,t,n,a){var o;"string"==typeof e?(o=function(e){var t=e||"/",n="",r="",a=t.indexOf("#");-1!==a&&(r=t.substr(a),t=t.substr(0,a));var o=t.indexOf("?");return-1!==o&&(n=t.substr(o),t=t.substr(0,o)),{pathname:t,search:"?"===n?"":n,hash:"#"===r?"":r}}(e),o.state=t):(void 0===(o=(0,r.Z)({},e)).pathname&&(o.pathname=""),o.search?"?"!==o.search.charAt(0)&&(o.search="?"+o.search):o.search="",o.hash?"#"!==o.hash.charAt(0)&&(o.hash="#"+o.hash):o.hash="",void 0!==t&&void 0===o.state&&(o.state=t));try{o.pathname=decodeURI(o.pathname)}catch(l){throw l instanceof URIError?new URIError('Pathname "'+o.pathname+'" could not be decoded. This is likely caused by an invalid percent-encoding.'):l}return n&&(o.key=n),a?o.pathname?"/"!==o.pathname.charAt(0)&&(o.pathname=i(o.pathname,a.pathname)):o.pathname=a.pathname:o.pathname||(o.pathname="/"),o}function g(){var e=null;var t=[];return{setPrompt:function(t){return e=t,function(){e===t&&(e=null)}},confirmTransitionTo:function(t,n,r,a){if(null!=e){var o="function"==typeof e?e(t,n):e;"string"==typeof o?"function"==typeof r?r(o,a):a(!0):a(!1!==o)}else a(!0)},appendListener:function(e){var n=!0;function r(){n&&e.apply(void 0,arguments)}return t.push(r),function(){n=!1,t=t.filter((function(e){return e!==r}))}},notifyListeners:function(){for(var e=arguments.length,n=new Array(e),r=0;rt?n.splice(t,n.length-t,a):n.push(a),d({action:r,location:a,index:t,entries:n})}}))},replace:function(e,t){var r="REPLACE",a=p(e,t,m(),w.location);u.confirmTransitionTo(a,r,n,(function(e){e&&(w.entries[w.index]=a,d({action:r,location:a}))}))},go:y,goBack:function(){y(-1)},goForward:function(){y(1)},canGo:function(e){var t=w.index+e;return t>=0&&t
'};function a(e,t,n){return en?n:e}function o(e){return 100*(-1+e)}function i(e,t,n){var a;return(a="translate3d"===r.positionUsing?{transform:"translate3d("+o(e)+"%,0,0)"}:"translate"===r.positionUsing?{transform:"translate("+o(e)+"%,0)"}:{"margin-left":o(e)+"%"}).transition="all "+t+"ms "+n,a}n.configure=function(e){var t,n;for(t in e)void 0!==(n=e[t])&&e.hasOwnProperty(t)&&(r[t]=n);return this},n.status=null,n.set=function(e){var t=n.isStarted();e=a(e,r.minimum,1),n.status=1===e?null:e;var o=n.render(!t),c=o.querySelector(r.barSelector),u=r.speed,d=r.easing;return o.offsetWidth,l((function(t){""===r.positionUsing&&(r.positionUsing=n.getPositioningCSS()),s(c,i(e,u,d)),1===e?(s(o,{transition:"none",opacity:1}),o.offsetWidth,setTimeout((function(){s(o,{transition:"all "+u+"ms linear",opacity:0}),setTimeout((function(){n.remove(),t()}),u)}),u)):setTimeout(t,u)})),this},n.isStarted=function(){return"number"==typeof n.status},n.start=function(){n.status||n.set(0);var e=function(){setTimeout((function(){n.status&&(n.trickle(),e())}),r.trickleSpeed)};return r.trickle&&e(),this},n.done=function(e){return e||n.status?n.inc(.3+.5*Math.random()).set(1):this},n.inc=function(e){var t=n.status;return t?("number"!=typeof e&&(e=(1-t)*a(Math.random()*t,.1,.95)),t=a(t+e,0,.994),n.set(t)):n.start()},n.trickle=function(){return n.inc(Math.random()*r.trickleRate)},e=0,t=0,n.promise=function(r){return r&&"resolved"!==r.state()?(0===t&&n.start(),e++,t++,r.always((function(){0==--t?(e=0,n.done()):n.set((e-t)/e)})),this):this},n.render=function(e){if(n.isRendered())return document.getElementById("nprogress");u(document.documentElement,"nprogress-busy");var t=document.createElement("div");t.id="nprogress",t.innerHTML=r.template;var a,i=t.querySelector(r.barSelector),l=e?"-100":o(n.status||0),c=document.querySelector(r.parent);return s(i,{transition:"all 0 linear",transform:"translate3d("+l+"%,0,0)"}),r.showSpinner||(a=t.querySelector(r.spinnerSelector))&&p(a),c!=document.body&&u(c,"nprogress-custom-parent"),c.appendChild(t),t},n.remove=function(){d(document.documentElement,"nprogress-busy"),d(document.querySelector(r.parent),"nprogress-custom-parent");var e=document.getElementById("nprogress");e&&p(e)},n.isRendered=function(){return!!document.getElementById("nprogress")},n.getPositioningCSS=function(){var e=document.body.style,t="WebkitTransform"in e?"Webkit":"MozTransform"in e?"Moz":"msTransform"in e?"ms":"OTransform"in e?"O":"";return t+"Perspective"in e?"translate3d":t+"Transform"in e?"translate":"margin"};var l=function(){var e=[];function t(){var n=e.shift();n&&n(t)}return function(n){e.push(n),1==e.length&&t()}}(),s=function(){var e=["Webkit","O","Moz","ms"],t={};function n(e){return e.replace(/^-ms-/,"ms-").replace(/-([\da-z])/gi,(function(e,t){return t.toUpperCase()}))}function r(t){var n=document.body.style;if(t in n)return t;for(var r,a=e.length,o=t.charAt(0).toUpperCase()+t.slice(1);a--;)if((r=e[a]+o)in n)return r;return t}function a(e){return e=n(e),t[e]||(t[e]=r(e))}function o(e,t,n){t=a(t),e.style[t]=n}return function(e,t){var n,r,a=arguments;if(2==a.length)for(n in t)void 0!==(r=t[n])&&t.hasOwnProperty(n)&&o(e,n,r);else o(e,a[1],a[2])}}();function c(e,t){return("string"==typeof e?e:f(e)).indexOf(" "+t+" ")>=0}function u(e,t){var n=f(e),r=n+t;c(n,t)||(e.className=r.substring(1))}function d(e,t){var n,r=f(e);c(e,t)&&(n=r.replace(" "+t+" "," "),e.className=n.substring(1,n.length-1))}function f(e){return(" "+(e.className||"")+" ").replace(/\s+/gi," ")}function p(e){e&&e.parentNode&&e.parentNode.removeChild(e)}return n},void 0===(a="function"==typeof r?r.call(t,n,t,e):r)||(e.exports=a)},7418:function(e){"use strict";var t=Object.getOwnPropertySymbols,n=Object.prototype.hasOwnProperty,r=Object.prototype.propertyIsEnumerable;function a(e){if(null==e)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(e)}e.exports=function(){try{if(!Object.assign)return!1;var e=new String("abc");if(e[5]="de","5"===Object.getOwnPropertyNames(e)[0])return!1;for(var t={},n=0;n<10;n++)t["_"+String.fromCharCode(n)]=n;if("0123456789"!==Object.getOwnPropertyNames(t).map((function(e){return t[e]})).join(""))return!1;var r={};return"abcdefghijklmnopqrst".split("").forEach((function(e){r[e]=e})),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},r)).join("")}catch(a){return!1}}()?Object.assign:function(e,o){for(var i,l,s=a(e),c=1;c{}\w]+/.source,a="&"+r,o="(\\()",i=/(?:[^()]|\((?:[^()]|\((?:[^()]|\((?:[^()]|\((?:[^()]|\([^()]*\))*\))*\))*\))*\))*/.source,l={heading:{pattern:/;;;.*/,alias:["comment","title"]},comment:/;.*/,string:{pattern:/"(?:[^"\\]|\\.)*"/,greedy:!0,inside:{argument:/[-A-Z]+(?=[.,\s])/,symbol:RegExp("`"+r+"'")}},"quoted-symbol":{pattern:RegExp("#?'"+r),alias:["variable","symbol"]},"lisp-property":{pattern:RegExp(":"+r),alias:"property"},splice:{pattern:RegExp(",@?"+r),alias:["symbol","variable"]},keyword:[{pattern:RegExp("(\\()(?:and|(?:cl-)?letf|cl-loop|cond|cons|error|if|(?:lexical-)?let\\*?|message|not|null|or|provide|require|setq|unless|use-package|when|while)(?=\\s)"),lookbehind:!0},{pattern:RegExp("(\\()(?:append|by|collect|concat|do|finally|for|in|return)(?=\\s)"),lookbehind:!0}],declare:{pattern:t(/declare/.source),lookbehind:!0,alias:"keyword"},interactive:{pattern:t(/interactive/.source),lookbehind:!0,alias:"keyword"},boolean:{pattern:n(/nil|t/.source),lookbehind:!0},number:{pattern:n(/[-+]?\d+(?:\.\d*)?/.source),lookbehind:!0},defvar:{pattern:RegExp("(\\()def(?:const|custom|group|var)\\s+"+r),lookbehind:!0,inside:{keyword:/^def[a-z]+/,variable:RegExp(r)}},defun:{pattern:RegExp(o+/(?:cl-)?(?:defmacro|defun\*?)\s+/.source+r+/\s+\(/.source+i+/\)/.source),lookbehind:!0,greedy:!0,inside:{keyword:/^(?:cl-)?def\S+/,arguments:null,function:{pattern:RegExp("(^\\s)"+r),lookbehind:!0},punctuation:/[()]/}},lambda:{pattern:RegExp("(\\()lambda\\s+\\(\\s*(?:&?"+r+"(?:\\s+&?"+r+")*\\s*)?\\)"),lookbehind:!0,greedy:!0,inside:{keyword:/^lambda/,arguments:null,punctuation:/[()]/}},car:{pattern:RegExp(o+r),lookbehind:!0},punctuation:[/(?:['`,]?\(|[)\[\]])/,{pattern:/(\s)\.(?=\s)/,lookbehind:!0}]},s={"lisp-marker":RegExp(a),varform:{pattern:RegExp(/\(/.source+r+/\s+(?=\S)/.source+i+/\)/.source),inside:l},argument:{pattern:RegExp(/(^|[\s(])/.source+r),lookbehind:!0,alias:"variable"},rest:l},c="\\S+(?:\\s+\\S+)*",u={pattern:RegExp(o+i+"(?=\\))"),lookbehind:!0,inside:{"rest-vars":{pattern:RegExp("&(?:body|rest)\\s+"+c),inside:s},"other-marker-vars":{pattern:RegExp("&(?:aux|optional)\\s+"+c),inside:s},keys:{pattern:RegExp("&key\\s+"+c+"(?:\\s+&allow-other-keys)?"),inside:s},argument:{pattern:RegExp(r),alias:"variable"},punctuation:/[()]/}};l.lambda.inside.arguments=u,l.defun.inside.arguments=e.util.clone(u),l.defun.inside.arguments.inside.sublist=u,e.languages.lisp=l,e.languages.elisp=l,e.languages.emacs=l,e.languages["emacs-lisp"]=l}(Prism)},4961:function(e,t,n){var r={"./prism-lisp":5520};function a(e){var t=o(e);return n(t)}function o(e){if(!n.o(r,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return r[e]}a.keys=function(){return Object.keys(r)},a.resolve=o,e.exports=a,a.id=4961},2703:function(e,t,n){"use strict";var r=n(414);function a(){}function o(){}o.resetWarningCache=a,e.exports=function(){function e(e,t,n,a,o,i){if(i!==r){var l=new Error("Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types");throw l.name="Invariant Violation",l}}function t(){return e}e.isRequired=e;var n={array:e,bigint:e,bool:e,func:e,number:e,object:e,string:e,symbol:e,any:e,arrayOf:t,element:e,elementType:e,instanceOf:t,node:e,objectOf:t,oneOf:t,oneOfType:t,shape:t,exact:t,checkPropTypes:o,resetWarningCache:a};return n.PropTypes=n,n}},5697:function(e,t,n){e.exports=n(2703)()},414:function(e){"use strict";e.exports="SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED"},4448:function(e,t,n){"use strict";var r=n(7294),a=n(7418),o=n(3840);function i(e){for(var t="https://reactjs.org/docs/error-decoder.html?invariant="+e,n=1;n