{"id":2219,"date":"2022-03-13T11:30:12","date_gmt":"2022-03-13T11:30:12","guid":{"rendered":"https:\/\/gridnet.org\/wpp\/?p=2219"},"modified":"2022-07-19T09:06:51","modified_gmt":"2022-07-19T09:06:51","slug":"nfts-made-the-right-way-and-gridscript-programming","status":"publish","type":"post","link":"https:\/\/gridnet.org\/wpp\/index.php\/2022\/03\/13\/nfts-made-the-right-way-and-gridscript-programming\/","title":{"rendered":"NFTs (made the right way) and #GridScript programming"},"content":{"rendered":"<h1><span style=\"color: #00ffff;\">\ud83c\udf1f<em><span style=\"color: #00ff00;\">Necessity\u00a0<\/span><\/em>is a mother of <span style=\"color: #ff99cc;\"><em>Invention<\/em><\/span><\/span><\/h1>\n<blockquote><p>(..) Blessed be <em><span style=\"color: #00ffff;\">Thee<\/span> <\/em>who follow the paths of <span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22ee Decentralization<\/strong><\/span> (..) for there shalt be no stoppin&#8217; ! (..) <strong><em><span style=\"color: #00ff00;\">Rejoice!<\/span><\/em><\/strong><\/p><\/blockquote>\n<p>A <strong><span style=\"color: #00ffff;\"><em>Funky <span style=\"color: #00ff00;\">Folk<\/span><\/em><\/span><\/strong> once said.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2221 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/einstein2.jpg\" alt=\"\" width=\"850\" height=\"400\" \/><\/p>\n<p>What is to follow is a brief showcase\u00a0of an\u00a0<span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22ee\u00a0<\/strong><\/span><em><span style=\"color: #00ffff;\"><strong>Wizardous\ud83e\uddd9\ud83e\uddd9\u200d\u2640\ufe0f<\/strong> <\/span>attempt of fulfilling<span style=\"color: #00ffff;\"><strong> Artists&#8217;<\/strong> <\/span>needs of\u00a0<strong><span style=\"color: #ff9900;\">staying<\/span> <span style=\"color: #00ff00;\">connected<\/span><\/strong><\/em>.<\/p>\n<blockquote><p>&#8220;(..) connected .. with what?&#8221; \ud83d\ude33 With their <span style=\"color: #ff6600;\"><strong>community!<\/strong><\/span>\u00a0Easy promotions and interactions? <span style=\"color: #00ff00;\">Sure!\ud83d\ude01<\/span><\/p><\/blockquote>\n<p><strong><span style=\"color: #00ffff;\">Imagine<\/span> <\/strong>you are an artist creating fascinating works of art. On these you want to make some \ud83d\udcb0<\/p>\n<blockquote><p><em><strong><span style=\"color: #00ff00;\">\u00a0<\/span>(..) being an <span style=\"color: #00ff00;\">Artist\u00a0<\/span> (..) <\/strong>since the dawn of <span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22ee\u00a0<\/strong>NTFs<\/span> seems like there is a chance you will make some serious\u00a0\ud83e\udd11 before.. you <span style=\"color: #124b63;\">pass away<\/span><strong>\u2728 <span style=\"color: #00ff00;\">Rejoice!<\/span><\/strong><\/em><\/p><\/blockquote>\n<p>What <em>\u00a0<\/em><span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22ee<\/strong><\/span><span style=\"color: #00ffff;\"><strong>GRIDNET<\/strong> <\/span><strong><span style=\"color: #00ccff;\">OS <\/span><\/strong>brings to the table?<\/p>\n<ul>\n<li>On-the-chain storage (if you can afford). Recall that <span style=\"color: #00ffff;\">The Old <strong>Wizard\ud83e\uddd9<\/strong><\/span> covers on-the-chain storage of the first 10 000 NFTs!<\/li>\n<li>Off-the-chain storage of large data files<\/li>\n<li>All your works of <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8<\/span><\/strong>can be easily browsed though from the<strong><span style=\"color: #00ffff;\"> \u22ee\u22ee\u22eeDecentralized Web-UI<\/span><\/strong><\/li>\n<li>Deploy <span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22eeNFTs<\/strong><\/span> by drag-and-dropping them from native Operating System to Web-UI and following the on-screen animated <span style=\"color: #00ffff;\"><strong>Wizard<\/strong>.<\/span><\/li>\n<li><strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22eeNFTs<\/span>\u00a0<\/strong>accessible and deployable over SSH as well (invocation of just a few simple commands and that&#8217;s\u00a0 about it! covered already over <a href=\"https:\/\/gridnet.org\/wpp\/index.php\/2022\/03\/11\/nfts-made-the-right-way-nft\/\">here<\/a>)<\/li>\n<li>Sell your\u00a0<strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22eeNFTs\u00a0<span style=\"color: #000000;\"><span style=\"color: #00ff00;\">easily.\u00a0<\/span><\/span><\/span><\/strong>All it takes is a single invocation of a Linux-compatible\u00a0<strong><span style=\"color: #00ff00;\">CHOWN<\/span> <\/strong>command.<\/li>\n<li>Create <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8\u00a0<\/span><\/strong>galleries.. you own, by&#8230; creating directories within your home State-Domain. Others may own works of art within.<\/li>\n<li>The entire system is backed by military (i.e. <em><strong><span style=\"color: #00ffff;\">Wizardous<\/span><\/strong><\/em><strong><span style=\"color: #00ffff;\">\ud83e\uddd9\ud83e\uddd9\u200d\u2640\ufe0f<\/span><\/strong>) class, Linux-compatible <strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22eeAccess Control Lists (ACLs)<\/span><\/strong>.<\/li>\n<li>There are no limits as everything can be easily manipulated from <span style=\"color: #00ffff;\"><strong>#GridScript.<\/strong><\/span><\/li>\n<\/ul>\n<p><strong><span style=\"color: #00ffff;\">Now,<\/span><\/strong> let us give you a quick outlook on how one may interact with <strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22eeNFTs <\/span><\/strong>from\u00a0<strong><span style=\"color: #00ffff;\">#GridScript<\/span><\/strong><\/p>\n<p>So, you create a directory which is supposed to serve as an <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8\u00a0<\/span><\/strong>gallery for the artworks you and possibly others create. You may easily grant access to a folder \/ gallery to others by giving them write permissions to a folder.<\/p>\n<p>You and possibly others deploy works of <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8<\/span><\/strong>\u00a0to this very folder. Either through the\u00a0 <span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22eeDecentralized Web-UI<\/strong>, <\/span>or<span style=\"color: #00ffff;\"> <strong>\u22ee\u22ee\u22ee\u00a0<\/strong>SSH.\u00a0<\/span>Owners easily change ownership of particular works of <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8<\/span><\/strong>at any time through invocations of <span style=\"color: #00ffff;\"><strong>CHOWN <\/strong><\/span>command. Your works are stored either on the <strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22eedecentralized VM<\/span><\/strong> or somewhere else. Any such details you specify when initially rendering a file as an\u00a0<strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22ee\u00a0NFT<\/span><\/strong> by invoking the <strong><span style=\"color: #00ffff;\">SETMETA\u00a0<\/span><\/strong>command. Once done, <span style=\"color: #ff6600;\"><strong>it is forever.<\/strong><\/span> Meaning even beyond\u00a0<span style=\"color: #00ffff;\">The Old\u00a0<strong>Wizard<\/strong>&#8216;s<strong>\ud83e\uddd9\u00a0<span style=\"color: #ff99cc;\">control.\u00a0<\/span><em><span style=\"color: #00ff00;\">Rejoice!\ud83e\udd29<\/span><\/em><\/strong><\/span><\/p>\n<blockquote><p>(..) by employing the analogy of folders, artists can easily manage and keep track of their works of <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8<\/span><\/strong>. Not only can <em><strong><span style=\"color: #00ffff;\">They<\/span> <\/strong><\/em>easily check-up on who currently owns which, but it also benefits art-collectors who can easily prove that their own a piece of <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8<\/span><\/strong>created by a particular artist by just pointing others to a file on a <span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22ee decentralize<\/strong>d file-system<\/span> say.. <span style=\"color: #00ffff;\">\/Picasso\/MonaLisa.png\u00a0<\/span>Anyone could then verify current owner by executing <strong><span style=\"color: #00ffff;\">GETMETA <\/span><\/strong>on that very file.. or <span style=\"color: #00ffff;\"><strong>LS<\/strong> <\/span>to see who owns each and every <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8<\/span><\/strong>-work by that very artist. <em><strong><span style=\"color: #00ffff;\">Artists<\/span> <\/strong><\/em>may group works of art into galleries, by subjects, topics and assign additional <strong><span style=\"color: #00ffff;\">meta-data<\/span><\/strong> to each.<strong><span style=\"color: #00ffff;\"> <span style=\"color: #00ff00;\">Rejoice!\ud83e\udd29<\/span><\/span><\/strong><\/p><\/blockquote>\n<p>Everything is nice and cool but say (..) one day(..)\u00a0 you arrive at an <em><strong><span style=\"color: #00ffff;\">idea.<\/span><\/strong><\/em><\/p>\n<p>&nbsp;<\/p>\n<blockquote><p>(..) oh blessed be <em><strong><span style=\"color: #00ffff;\">Thee<\/span> <\/strong><\/em>whose cup\u2615 remains at least half-empty <em><strong><span style=\"color: #00ff00;\">at all times!<\/span><\/strong><\/em><\/p><\/blockquote>\n<h2><span style=\"color: #00ffff;\">\ud83c\udf1fNFTs Made Sm<span style=\"color: #ffcc00;\">a<\/span><strong><span style=\"color: #ff9900;\"><span style=\"color: #ffcc00;\">rt<\/span>\ud83c\udfa8<\/span><\/strong><\/span><\/h2>\n<p>How do you easily keep track of current art owners? Maybe you would like to<\/p>\n<ul>\n<li>offer some promotional offers (say if one holds a piece from your\u00a0&#8220;Magic Cats&#8221; <strong><span style=\"color: #ff9900;\">Art\ud83c\udfa8\u00a0<\/span><\/strong>collection for 1 year, then he automatically receives &#8220;<span style=\"color: #00ffff;\">The Old <em><strong>Wizard<\/strong><\/em>&#8216;s<strong>\ud83e\uddd9<\/strong><\/span> <span style=\"color: #ff9900;\"><strong>Kitty<\/strong><\/span>\ud83d\ude3a&#8221;?<\/li>\n<li>communicate with\u00a0owners?<\/li>\n<li>implement any sort of logic through <span style=\"color: #00ffff;\"><strong>#GridScript<\/strong><\/span><\/li>\n<li>make the works of art available in arbitrary User-Interface based <strong><span style=\"color: #00ffff;\">\u22ee\u22ee\u22eedecentralized<\/span>\u00a0<\/strong>applications available from the \u00a0<span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22eeWeb-UI<\/strong><\/span> (VR art collections or whatever your imagination manages to arrive at)<\/li>\n<\/ul>\n<ol>\n<li>Below, we deploy two files using Linux-compatible <strong><span style=\"color: #00ffff;\">TOUCH<\/span><\/strong>\u00a0command, these could be easily converted into <strong><span style=\"color: #00ffff;\">NFTs<\/span><\/strong> as described over here.<br \/>\nWe also execute <span style=\"color: #00ffff;\"><strong>LS<\/strong> <\/span>to check-up on them.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2227 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/s1.png\" alt=\"\" width=\"540\" height=\"420\" \/><\/p>\n<p data-pm-slice=\"1 1 []\">Now, let us feel like programmers for a moment. Recall that each and every instruction and utility you take use of at some point is a<span style=\"color: #00ffff;\"> <strong>#<em>GridScript<\/em><\/strong><\/span> instruction. The commands which we have usually described so far constitute high-level<em><span style=\"color: #00ffff;\"><strong> #GridScript<\/strong><\/span><\/em> commands and utilities. Design to be easy to use and reassemble Windows\/Linux\/Windows commands. Let us now dig just a little deeper shall?<br \/>\nAs you execute #GridScript commands, these commands may affect Stack. On more details on the Stack (there actually are multiple Stacks at your disposal in <em><span style=\"color: #00ffff;\"><strong>#GridScript<\/strong>,<\/span><\/em> feel free to browse through\u00a0<a href=\"https:\/\/forth.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">https:\/\/forth.com<\/a>\/ as <em><span style=\"color: #00ffff;\"><strong>#GridScript<\/strong> <\/span><\/em>is backwards compatible with Forth, for the most of it).<\/p>\n<\/li>\n<li><strong><span style=\"color: #00ff00;\">Now,\u00a0<\/span><\/strong>let us see owners of all these files. All it takes is:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2228 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/lss.png\" alt=\"\" width=\"389\" height=\"115\" \/><br \/>\nWe may notice that each and every file belongs to the Domain within which the file was created. That is by default.<\/li>\n<li>To change ownership of<span style=\"color: #00ff00;\"><strong> thewand.jpg<\/strong><\/span> , we execute the <span style=\"color: #00ffff;\"><strong>CHOWN<\/strong> <\/span>command, as follows:<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2229 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/vega4.png\" alt=\"\" width=\"389\" height=\"113\" \/><\/p>\n<blockquote><p>(..) <em><span style=\"color: #00ffff;\">easy peasy<\/span> <\/em>(..) and <em><span style=\"color: #00ff00;\"><strong>Rejoice!\ud83e\udd29<\/strong><\/span><\/em><\/p><\/blockquote>\n<\/li>\n<li>\u00a0How about interacting with the programming stack? Guess what?\ud83e\udd17 Still extremely <strong><span style=\"color: #00ff00;\">easy<\/span><\/strong>!\ud83d\ude01<br \/>\n<span style=\"color: #00ffff;\"><em><strong><span style=\"color: #00ff00;\">Rejoice!\ud83e\udd29<\/span><\/strong><\/em> As <em>\u00a0<\/em><strong>\u22ee\u22ee\u22ee<\/strong><strong>GRIDNET<\/strong>\u00a0<strong><span style=\"color: #00ccff;\">OS<\/span><\/strong><\/span><strong>\u00a0<\/strong>is always more than happy to give as a helpful hand. The LS is effective even without parameters, thus we need to use the<br \/>\n&#8220;-help&#8221; switch in order to be shown a description of the utility, along with optional parameters and some examples. What a fun! What a joy! And indeed.<\/p>\n<blockquote><p>(..) Let us go! (&#8230;) Let us flow! (&#8230;.) and <em><strong><span style=\"color: #00ff00;\">Rejoice!\ud83e\udd29<\/span><\/strong><\/em><\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2231 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/lshelp.png\" alt=\"\" width=\"643\" height=\"417\" \/><\/li>\n<li>Before executing any additional commands, the stacks are empty. You may reset stacks at any time by using the <strong><span style=\"color: #00ffff;\">RS<\/span> <\/strong>command.<br \/>\n<strong><span style=\"color: #00ffff;\">.S<\/span> <\/strong>is used to list contents of the data-stack is atomic values, whereas <strong><span style=\"color: #00ffff;\">.M<\/span><\/strong> attempts to show memory contents.<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2233 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/emptystack.png\" alt=\"\" width=\"436\" height=\"146\" \/><br \/>\nWe will be now after putting the names of files and folders located within the directory onto the stack. According to the help-page of <span style=\"color: #00ffff;\"><strong>LS<\/strong><\/span>, all it takes is to employ the <strong><span style=\"color: #00ffff;\">-NS<\/span><\/strong> switch. <em><strong><span style=\"color: #00ff00;\">Let us try!<\/span><\/strong><\/em><br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2235 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/namesonstack-1.png\" alt=\"\" width=\"472\" height=\"245\" \/><br \/>\nFirst we executes <span style=\"color: #00ffff;\"><strong>.S<\/strong><\/span> We may see stack values along with dynamically generated descriptions of each and every value. Thus it says that the upper most value is the number (see the <strong><span style=\"color: #00ffff;\">UINT<\/span> <\/strong>data-type to the right?) of elements,\u00a0 followed by 4 memory pointers. Let us now see what these memory regions hold<br \/>\n<img loading=\"lazy\" decoding=\"async\" class=\"size-full wp-image-2236 aligncenter\" src=\"http:\/\/gridnet.org\/wpp\/wp-content\/uploads\/2022\/03\/memoryregions.png\" alt=\"\" width=\"328\" height=\"251\" \/><br \/>\nand<em><strong><span style=\"color: #00ff00;\"> Rejoice!\ud83e\udd29<\/span> <\/strong><\/em>as we&#8217;ve effectively placed names of all the files \/ <span style=\"color: #00ffff;\"><strong>\u22ee\u22ee\u22ee<\/strong>NFTs<\/span> onto the data-stack, now available for anything we desire.<\/li>\n<\/ol>\n<h2><strong><span style=\"color: #00ff00;\">\ud83c\udf1f<span style=\"color: #00ffff;\">Homework<\/span><\/span><\/strong><\/h2>\n<p>How about putting owners onto the data-stack? That shall be your <strong><em><span style=\"color: #ff99cc;\">homework!<\/span><\/em><\/strong>\ud83d\ude0e<br \/>\n<strong><span style=\"color: #00ff00;\">Hint:<\/span><\/strong> take a look at the help-page of <strong><span style=\"color: #00ffff;\">LS<\/span> <\/strong>yet again\ud83e\udd2b<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\ud83c\udf1fNecessity\u00a0is a mother of Invention (..) Blessed be Thee who follow the paths of \u22ee\u22ee\u22ee Decentralization (..) for there shalt be no stoppin&#8217; ! (..) Rejoice! A Funky Folk once said. What is to follow is a brief showcase\u00a0of an\u00a0\u22ee\u22ee\u22ee\u00a0Wizardous\ud83e\uddd9\ud83e\uddd9\u200d\u2640\ufe0f attempt of fulfilling Artists&#8217; needs of\u00a0staying connected. &#8220;(..) connected .. with what?&#8221; \ud83d\ude33 With their [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":2260,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10,113,17,1],"tags":[],"class_list":["post-2219","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-os-news","category-nfts","category-tutorial","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/posts\/2219","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/comments?post=2219"}],"version-history":[{"count":35,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/posts\/2219\/revisions"}],"predecessor-version":[{"id":4593,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/posts\/2219\/revisions\/4593"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/media\/2260"}],"wp:attachment":[{"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/media?parent=2219"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/categories?post=2219"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/gridnet.org\/wpp\/index.php\/wp-json\/wp\/v2\/tags?post=2219"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}