<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
    <channel>
        <title>0xAbaki</title>
        <link>https://paragraph.com/@0xabaki</link>
        <description>Writings on Medium, music on spotify, other projects on the liketree in the URL

ML enthusiast, dancer, wanting to do some web3

尾張旭市、愛知生まれ</description>
        <lastBuildDate>Sat, 11 Apr 2026 12:25:05 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en</language>
        <image>
            <title>0xAbaki</title>
            <url>https://storage.googleapis.com/papyrus_images/52296237dd5749333ec8bb8296c81ec726a32881ef5e085f25bd31445fc3f6cd.png</url>
            <link>https://paragraph.com/@0xabaki</link>
        </image>
        <copyright>All rights reserved</copyright>
        <item>
            <title><![CDATA[Statistical, Subspace based, and Classifier Unsupervised Anomaly Detection Algorithms]]></title>
            <link>https://paragraph.com/@0xabaki/statistical-subspace-based-and-classifier-unsupervised-anomaly-detection-algorithms</link>
            <guid>G04qubagYG10GcmNhWQF</guid>
            <pubDate>Thu, 22 Feb 2024 20:41:42 GMT</pubDate>
            <description><![CDATA[4A) Histogram Based Outlier Score (HBOS)This is a statistical algorithmcreate a histogram for each feature in the datamultiply the inverse height of the feature bin that each bin resides in to get a feeling of the density a similar idea to the Naive Bayes algorithmoften used for fast semi-supervised anomaly detection the speed comes from ignoring the interdependencies of each feature with each other. This assumption is particularly safe when there’s a lot of one-off features that many other d...]]></description>
            <content:encoded><![CDATA[<h2 id="h-4a-histogram-based-outlier-score-hbos" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">4A) Histogram Based Outlier Score (HBOS)</h2><p>This is a statistical algorithm</p><ol><li><p>create a histogram for each feature in the data</p></li><li><p>multiply the inverse height of the feature bin that each bin resides in to get a feeling of the density a similar idea to the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.geeksforgeeks.org/naive-bayes-classifiers/">Naive Bayes algorithm</a></p></li></ol><p>often used for fast semi-supervised anomaly detection</p><p>the speed comes from ignoring the interdependencies of each feature with each other. This assumption is particularly safe when there’s a lot of one-off features that many other data points don’t have (a sparse and large feature space).</p><p>ex: HBOS can take 1 min where k-nn can take &gt;23 hours</p><p>bins can be created with</p><ol><li><p>static bin sizes w/ fixed bin width</p></li><li><p>dynamic bins so that the number of bins per feature is about the same (but different bin widths). This method is more robust when there are large outlying values.</p></li></ol><h2 id="h-5a-robust-principal-component-analysis-rpca" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">5A) robust Principal Component Analysis (rPCA)</h2><p>this is a modification of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=FD4DeN81ODY&amp;pp=ygUccHJpbmNpcGFsIGNvbXBvbmVudCBhbmFseXNpcw%3D%3D">Principal Component Analysis</a></p><p>The robustness comes from the covariance matrix being computed twice, a similar optimization method to CMGOS from my second post.</p><h2 id="h-6a-one-class-support-vector-machine-svm" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">6A) One-Class Support Vector Machine (SVM)</h2><p>often used for semi-supervised learning</p><ol><li><p>train on anomaly free training data</p></li><li><p>SVM later detects normal v anomaly</p></li></ol><p>but is inherently an unsupervised algorithm when using a soft marigin.</p><p>Since SVMs are better explained visually, check out <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.youtube.com/watch?v=_YPScrckx28&amp;t=3s&amp;pp=ygUWc3VwcG9ydCB2ZWN0b3IgbWFjaGluZQ%3D%3D">this video</a> for a more intuitive understanding.</p><p>in the paper, <em>η,</em> a value that adjusts the normality of an instance is added to optimize the algorithm.</p><h2 id="h-comparisons" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">Comparisons</h2><p>Below are the comparative tables of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0152173#pone.0152173.ref057">this research</a> we’ve been summarizing for reference. Hope you enjoyed the read!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/7b15c3518c3027ee44b159432b26b1560b76ec791e4db817d6477b95bb2123c5.png" alt="Table 1. The 10 datasets used for comparative evaluation of the unsupervised anomaly detection algorithms from different application domains.A broad spectrum of size, dimensionality and anomaly percentage is covered. They also differ in difficulty and cover local and global anomaly detection tasks.https://doi.org/10.1371/journal.pone.0152173.t001" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Table 1. The 10 datasets used for comparative evaluation of the unsupervised anomaly detection algorithms from different application domains.A broad spectrum of size, dimensionality and anomaly percentage is covered. They also differ in difficulty and cover local and global anomaly detection tasks.https://doi.org/10.1371/journal.pone.0152173.t001</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/28be391e8d23e9fc2a8594bf62b52a21bb751942fb7748f9bcf0f321e0b7c0bc.png" alt="Fig 8. The AUC values for the nearest-neighbor based algorithms on the breast-cancer dataset.It can be seen that k values smaller than 10 tend to result in poor estimates, especially when considering local anomaly detection algorithms. Please note that the AUC axis is cut off at 0.5.https://doi.org/10.1371/journal.pone.0152173.g008" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Fig 8. The AUC values for the nearest-neighbor based algorithms on the breast-cancer dataset.It can be seen that k values smaller than 10 tend to result in poor estimates, especially when considering local anomaly detection algorithms. Please note that the AUC axis is cut off at 0.5.https://doi.org/10.1371/journal.pone.0152173.g008</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e18e8c3862e6d73696ec8b642db8143998624fe96744b03cd08f430d51d55bd2.png" alt="Table 2. The results of the nearest-neighbor based algorithms showing the AUC and the standard deviation for 10 ≤ k ≤ 50 for all of the 10 datasets.Due to the computational complexity, LOCI could not be computed for larger datasets.https://doi.org/10.1371/journal.pone.0152173.t002" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Table 2. The results of the nearest-neighbor based algorithms showing the AUC and the standard deviation for 10 ≤ k ≤ 50 for all of the 10 datasets.Due to the computational complexity, LOCI could not be computed for larger datasets.https://doi.org/10.1371/journal.pone.0152173.t002</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/dae8e3cff18137f92a7bd17ace503fd265f3683940080572939d672121f3f172.png" alt="Fig 9. The AUC values for the large kdd99 dataset for 0 &lt; k &lt; 100.It can be easily seen that the performance of local anomaly detection algorithms is poor for this global anomaly detection challenge.https://doi.org/10.1371/journal.pone.0152173.g009" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Fig 9. The AUC values for the large kdd99 dataset for 0 &lt; k &lt; 100.It can be easily seen that the performance of local anomaly detection algorithms is poor for this global anomaly detection challenge.https://doi.org/10.1371/journal.pone.0152173.g009</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac100d52c8f2e30cb7fde42675c504b1a971aedfe5d4ec3b4831175f7eadf637.png" alt="Table 4. The AUC results of the remaining unsupervised anomaly detection algorithms.Four different strategies for keeping the components have been used for rPCA, while for HBOS the number of different bins was altered.https://doi.org/10.1371/journal.pone.0152173.t004" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Table 4. The AUC results of the remaining unsupervised anomaly detection algorithms.Four different strategies for keeping the components have been used for rPCA, while for HBOS the number of different bins was altered.https://doi.org/10.1371/journal.pone.0152173.t004</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/5005e3c7fa572425520e703723d6b5643801b83159c4eba41acf4ede980d2d53.png" alt="Table 5. Comparing the computation time of the different algorithm show huge differences, especially for the larger datasets.The unit of the table is seconds for the first nine columns and minutes for the last dataset (kdd99).https://doi.org/10.1371/journal.pone.0152173.t005" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Table 5. Comparing the computation time of the different algorithm show huge differences, especially for the larger datasets.The unit of the table is seconds for the first nine columns and minutes for the last dataset (kdd99).https://doi.org/10.1371/journal.pone.0152173.t005</figcaption></figure><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/566d354da7993c2ea72c748c4cbf85f14c4e1ca438ba5f0d3a71a4d1f702c145.png" alt="Table 6. Recommendations for algorithm selection.Qualitatively judgments are given from very bad (− −) over average (o) to very good (++).https://doi.org/10.1371/journal.pone.0152173.t006" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Table 6. Recommendations for algorithm selection.Qualitatively judgments are given from very bad (− −) over average (o) to very good (++).https://doi.org/10.1371/journal.pone.0152173.t006</figcaption></figure>]]></content:encoded>
            <author>0xabaki@newsletter.paragraph.com (0xAbaki)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/0a2fd3c2bc5fbdb59ac80f9ec4ef55a20deeaf6b62cec1ba97c3b86eeb90cbf1.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Clustering Based Unsupervised Anomaly Detection Algorithms]]></title>
            <link>https://paragraph.com/@0xabaki/clustering-based-unsupervised-anomaly-detection-algorithms</link>
            <guid>txSTnbnb0RBmCbVWKc07</guid>
            <pubDate>Sat, 17 Feb 2024 22:06:36 GMT</pubDate>
            <description><![CDATA[algorithm treePart 2 of my fun casual summary unsupervised anomaly detection algorithms. read part 1 and the intro here! now we want to remove the k-value by trying clustering based approaches instead of nearest neighbor based. in clustering the general idea is to make clusters in our data points to make groups and see which groups are outliers. again, we have global and local outliers to be focused on depending on different focuses2A) Cluster Based Local Outlier Factor (CBLOF)here the idea i...]]></description>
            <content:encoded><![CDATA[<figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/574a38dd287cdd2b11ff4b499b1cbb35d1281bf74e9a0cdbd4cd5a8a53eb612a.png" alt="algorithm tree" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">algorithm tree</figcaption></figure><p>Part 2 of my fun casual summary unsupervised anomaly detection algorithms.</p><p>read part 1 and the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.linkedin.com/feed/update/urn:li:activity:7162818738071752704?utm_source=share&amp;utm_medium=member_desktop">intro here!</a></p><p>now we want to remove the k-value by trying clustering based approaches instead of nearest neighbor based.</p><p>in clustering the general idea is to make clusters in our data points to make groups and see which groups are outliers.</p><p>again, we have global and local outliers to be focused on depending on different focuses</p><h2 id="h-2a-cluster-based-local-outlier-factor-cblof" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2A) Cluster Based Local Outlier Factor (CBLOF)</h2><p>here the idea is to cluster first, then calculate the density of points.</p><p>we use k-means clustering for the O(n) runtime as opposed to O(n**2) nearest neighbor search we saw before.</p><p>then we use a heuristic to classify small and big clusters</p><p>an anomaly score is given where</p><p>large cluster score = distance of each cluster to it’s center * number of points in the group</p><p>small cluster group = distance to the closest large cluster</p><p>doing “* number of points in the group“ was supposed to account for the local density and scale the value, but it seems this does not work well.</p><p>So the authors propose an augmented unweighted CBLOF (uCBLOF) where we say</p><p>large cluster score = distance of each cluster to it’s center</p><p>to take away the weight</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/98059b088a7d7650ef5d6c293033e524f167934dda10094650b8185469a327ea.png" alt="Fig 7. A visualization of the results for the uCBLOF algorithm.The anomaly score is represented by the bubble size, whereas the color corresponds to the clustering result of the preceded k-means clustering algorithm. Local anomalies are obviously not detected using uCBLOF.https://doi.org/10.1371/journal.pone.0152173.g007" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Fig 7. A visualization of the results for the uCBLOF algorithm.The anomaly score is represented by the bubble size, whereas the color corresponds to the clustering result of the preceded k-means clustering algorithm. Local anomalies are obviously not detected using uCBLOF.https://doi.org/10.1371/journal.pone.0152173.g007</figcaption></figure><p>the k-values are tested many times and the stables results are chosen since k-values are very sensitive in k-means clustering.</p><p>unfortunately since we took out the density of the cluster uCBLOF is no longer a local anomaly detection method ;(</p><h2 id="h-2b-local-density-cluster-based-outlier-factor-ldcof" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2B) Local Density Cluster-based Outlier Factor (LDCOF)</h2><p>Here we estimate the density assuming a spherical distribution of a cluster to bring back the locality to uCBLOF.</p><p>the procedure is very similar to uCBLOF:</p><ul><li><p>k-means clustering to find clusters</p></li><li><p>separate small and large clusters</p></li><li><p>calculate avg dist to centroid of cluster per cluster</p></li><li><p>calculate LDCOF score = distance(instance to cluster center)/average distance</p></li></ul><p>here a score of 1 or lower is an anomaly, much like LOF again :)</p><h2 id="h-2c-clustering-based-multivariate-gaussian-outlier-score-cmgos" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">2C) Clustering-based Multivariate Gaussian Outlier Score (CMGOS)</h2><p>we estimate a bell curve like underlying existance of data, and use the generalized distance formula (<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.wallstreetmojo.com/mahalanobis-distance/">mahalanobois distance</a>) for the anomaly score.</p><p>the steps are as follows:</p><ul><li><p>k-means cluster and separate into small and large clusters</p></li><li><p>calculate covariance matrix per cluster</p></li><li><p>CMGOS score = Genaralized euclidian distance(instance to it’s nearest cluster) / <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Chi-squared_distribution">chi-squared distribution</a> w/ a certain confidence interval</p><ul><li><p>this last step is for normalizing the multivariate distance by the size to make it so that a score of 1 or below is an anomaly again ;)</p></li></ul></li></ul><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/c2b6a4c0fbbe7e9abfb31af768229a25188278d9d2fe8bc36198469b2f07e6a3.png" alt="Mahalanobois equation (generalized euclidian pythagorean theorem)" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Mahalanobois equation (generalized euclidian pythagorean theorem)</figcaption></figure><p>there are various ways to robustly compute the Covariance matrix, each with their own algorithm name:</p><p>CMGOS-Red - Reduction to remove outliers (in second pass), similar to <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Grubbs%27s_test">Grubb’s Test</a></p><p>CMGOS-Reg - Regularization by weighing the COV matrix</p><p>CMGOS-MCD - brute force computational high usage method to find the Minimum Covariance Determinant</p><p>next we will dive into the rest for part 3!</p><p>note that this algorithm is also a part of Subspace Based as it uses distance in a space as a concept in its algorithm</p>]]></content:encoded>
            <author>0xabaki@newsletter.paragraph.com (0xAbaki)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/8aa18e030f681437e1fee858c763e66061b45c816b4af8ba21d14358c341f3c9.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[Global and Local Nearest Neighbors Based Unsupervised Anomaly Detection Algorithms]]></title>
            <link>https://paragraph.com/@0xabaki/global-and-local-nearest-neighbors-based-unsupervised-anomaly-detection-algorithms</link>
            <guid>sBwPRobfphwHdC69tJ4w</guid>
            <pubDate>Mon, 12 Feb 2024 14:40:29 GMT</pubDate>
            <description><![CDATA[This is part 1 of my summary of my recent learnings on unsupervised machine learning for anomaly detection algorithms. My background in writing this is that I took Data 100, EE 127, and the beginning parts of a few ML and DL courses back in uc berkeley cs undergrad. I’m working on a Congested Network Detection project so I wanted to share my learning journey in the spirit of learning in public This is from 2016 so it’s not exactly hot but in the spirit of pick up what the put down I’ll be put...]]></description>
            <content:encoded><![CDATA[<p>This is part 1 of my summary of my recent learnings on <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.ibm.com/topics/unsupervised-learning">unsupervised machine learning</a> for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.strongdm.com/blog/anomaly-detection">anomaly detection algorithms.</a></p><p>My background in writing this is that I took <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://ds100.org/">Data 100</a>, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://inst.eecs.berkeley.edu/~ee127/fa23/">EE 127</a>, and the beginning parts of a few ML and DL courses back in <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.berkeley.edu/">uc berkeley cs undergrad.</a></p><p>I’m working on a <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Network_congestion#:~:text=Network%20congestion%20in%20data%20networking,the%20blocking%20of%20new%20connections.">Congested Network</a> Detection project so I wanted to share my learning journey in the spirit of l<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.swyx.io/learn-in-public">earning in public</a></p><p>This is from 2016 so it’s not exactly hot but in the spirit of <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.swyx.io/puwtpd#pick-up-what-they-put-down">pick up what the put down</a> I’ll be putting the models <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://journals.plos.org/plosone/article?id=10.1371/journal.pone.0152173">from this paper</a> into my casual simpler terms so it might be easier for college or new grads like me to read through if you don’t have too much background. If you’d like a more academic version of this article, <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.goldiges.de/publications/Anomaly_Detection_Algorithms_for_RapidMiner.pdf">this might be good</a>.</p><p>If you don’t have a CS or math background I’ve included many links so you can jump in the rabbit hole and learn adjacent topics to get an idea of what the terms mean.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/574a38dd287cdd2b11ff4b499b1cbb35d1281bf74e9a0cdbd4cd5a8a53eb612a.png" alt="Unsupervised Anomaly Detection Algorithms" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Unsupervised Anomaly Detection Algorithms</figcaption></figure><p>I didn’t know this, but turns out there are further types within unsupervised learning, and we’ll go from left to right:</p><h2 id="h-1a-nearest-neighbor-based-global" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1A) Nearest Neighbor Based Global</h2><p>This is not the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.analyticsvidhya.com/blog/2018/03/introduction-k-neighbours-algorithm-clustering/#:~:text=The%20K%2DNearest%20Neighbors%20(KNN)%20algorithm%20is%20a%20popular,training%20dataset%20as%20a%20reference.">standard k-nn</a> I learned in data 100 as that is for <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.datacamp.com/blog/classification-machine-learning">CLASSIFYING</a></p><p>essentially, given a data point you choose k of the nearest neighbors around you.</p><p>then you either take</p><p>A: the kth neighbors distance (this is called kth-NN)</p><p>B: the k neighbors average distance (called k-NN)</p><p>to that single data point to give an anomaly score for that point.</p><p>the higher the anomaly score, the more likely that point is an anomaly.</p><p><strong>Often we choose 10 &lt; k &lt; 50</strong></p><p>in CLASSIFICATION I learned in data 100 we used <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://machinelearningmastery.com/k-fold-cross-validation/#:~:text=Cross%2Dvalidation%20is%20a%20resampling,into%20training%20and%20test%20set.">cross-validation</a> to find a good k value. However we are missing labels here so we can’t do that :(</p><p>Here’s a nice graph from the paper of k-NN in action!</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/12b6afd2fc237d5d7fb49d52c6460ac66172fc9d1c1a99759eba63ac50c937c7.png" alt="Fig 4. A visualization of the results of the k-NN global anomaly detection algorithm.The anomaly score is represented by the bubble size whereas the color shows the labels of the artificially generated dataset.https://doi.org/10.1371/journal.pone.0152173.g004" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Fig 4. A visualization of the results of the k-NN global anomaly detection algorithm.The anomaly score is represented by the bubble size whereas the color shows the labels of the artificially generated dataset.https://doi.org/10.1371/journal.pone.0152173.g004</figcaption></figure><p><strong>See from this graph how the k-NN can’t detect the weirdos close to the groupies and have small balls ;(</strong></p><p>in order to find these local weirdos hiding behind the clusters we introduce LOF!</p><h2 id="h-1b-local-outlier-function-lof" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1B) Local Outlier Function (LOF)</h2><p>now we have a new score to highlight local outliers using density as follows:</p><ol><li><p>find the k nearest records for data point x</p></li><li><p>we calculate the Local Reachability Density (LRD) as follows:</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/90275a6265cd4f85aeeb6c4465b4549b87706cb05f497800a6a4396ce0675ab0.png" alt="LRD function" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">LRD function</figcaption></figure><p>d_k( . ) is the reachability distance (usually the euclidean &lt;read: logical&gt; distance from point x to o, members of the set of nearest neighbors N_k of x).</p><p>we divide by the cardinality &lt;read: size of the set&gt; of the set of nearest neighbors, N_k</p><p>we then take the inverse of this normalized score so smaller LRD = less density ＆ vice versa</p><p>Finally we take a sum of the comparisons of the LRD of point x with the LRD of it’s k neighbors and normalize again to get the LOF:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/3e33ad790b74eb0c690e2b4a97b97147fbf7ba3c88bfa5d73b8883e4d7c93fd2.png" alt="LOF function" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">LOF function</figcaption></figure><p>so the LOF score is the sum of the ratio of local densities of k neighbors compared to a single point x</p><p><strong>which means similar density points get around a point of 1 because it’s nearly dividing my the same numbers.</strong></p><p>if an point is less dense than the others, you get a large score ;)</p><p>since we are using only k neighbors to say if a point is an anomaly, you’ll get a large amount of false positive global anomalies if you’re looking for that.</p><p>for global weirdos go back to 1A) k-nn</p><p>the author of the algo also reccomends you take an ensemble approach &lt;read: you group up a bunch of methods&gt; of taking the max of finding the LOF up to some uppebound of a k value for every point.</p><p>but we have a weakness!!!!!</p><p>(oh no)</p><p>taking the euclidian distance &lt;read: the geometric point to point distance&gt; assumes data is usually distributed spherically round each other. this is because in 2D - distances the same distance is around a radius from that point. This same problem occurs in n-dimensions for n &gt; 2</p><p>here are the sad facts ;(</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a15d0771fc4fd2f6f80a48cb7209e3d7c928e46f5c76850a7be6d0d3051c0053.png" alt="Fig 5. Comparing COF (top) with LOF (bottom) using a simple dataset with a linear correlation of two attributes.It can be seen that the spherical density estimation of LOF fails to recognize the anomaly, whereas COF detects the non-linear anomaly (k = 4).https://doi.org/10.1371/journal.pone.0152173.g005" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Fig 5. Comparing COF (top) with LOF (bottom) using a simple dataset with a linear correlation of two attributes.It can be seen that the spherical density estimation of LOF fails to recognize the anomaly, whereas COF detects the non-linear anomaly (k = 4).https://doi.org/10.1371/journal.pone.0152173.g005</figcaption></figure><h2 id="h-1c-connectivity-based-outlier-factor-cof" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1C) Connectivity Based Outlier Factor (COF)</h2><p>So instead we use a shortest path using a “chaining distance” which <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.sciencedirect.com/science/article/pii/S1877050923015673/pdf?md5=e81783bbc6d515c30d4848e544dc7d82&amp;pid=1-s2.0-S1877050923015673-main.pdf">still seems relavent today</a></p><p>$$chaining disntace = d_chain(x, y) = d(x, y) * (k-2) / (k-1)$$</p><p>where</p><ul><li><p>k = number of nearest neighbors used</p></li><li><p>d(x, y) = distance between x and y</p></li></ul><p>the minimum sum of all distances connecting all k neighbors and the instance is written in the paper but I couldn’t find the original paper on google scholar and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://claude.ai/chat/5ac84e42-9c86-45cf-904f-f846615a3da6">claude.ai</a> gave me the equation above and it seems legit</p><p>another down side of LOF is that fails to score points at the border of two different clusters of varying density.</p><h2 id="h-1d-influenced-outlierness-inflo" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1D) Influenced Outlierness (INFLO)</h2><p>we tackle this problem by looking at the reverse neighbors! so confusing.</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/20b2789b676376ba407ff99932bba74cd902c28b36bf7ebcc38853ac1d83be3d.png" alt="Fig 6. Comparing INFLO with LOF shows the usefulness of the reverse neighborhood set.For the red instance, LOF takes only the neighbors in the gray area into account resulting in a high anomaly score. INFLO additionally takes the blue instances into account (reverse neighbors) and thus scores the red instance more normal.https://doi.org/10.1371/journal.pone.0152173.g006" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Fig 6. Comparing INFLO with LOF shows the usefulness of the reverse neighborhood set.For the red instance, LOF takes only the neighbors in the gray area into account resulting in a high anomaly score. INFLO additionally takes the blue instances into account (reverse neighbors) and thus scores the red instance more normal.https://doi.org/10.1371/journal.pone.0152173.g006</figcaption></figure><p>but graphically this is intuitive as above. it takes in the neighborhoods of all the clusters around them so it takes an average of the happening around the point.</p><p>note that the reverse neighbor set can contain any amount, depending on the data.</p><p>scores are more accurate here with various density clusters close to eachother</p><h3 id="h-cool-we-got-a-ton-of-scores" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">cool we got a ton of scores!</h3><p>thats perfect for binary labels.</p><p>but where do we set the cut off to say what is an anomaly? it’s not clear ;(</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/2b33a706ea0e75041b42750ac0a83ba0baee279410d1585d8b3c0dcee1dc9be9.png" alt="unclear boundaries meme" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">unclear boundaries meme</figcaption></figure><h2 id="h-1e-local-outlier-probability-loop" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1E) Local Outlier Probability (LoOp)</h2><p>so we output the probability that a point is an outlier instead of a direct score ;)</p><p>we use some neat tricks to make the function spit out probabilities<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/mhnlakgilnojmhinhkckjpncpbhabphi">:</a></p><ol><li><p>since distances are always positive, LoOp assumes distributions are <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Half-normal_distribution">Half-Gaussian</a>. Which means we can use the standard deviation, called the Probablistic Set Distance (PSD) as the estimation for density of points.</p></li></ol><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/49711aa95b40bece800e3c6e40d7e625a28f836afdd8ad34f86c2ee8155a4ca6.png" alt="PSD equation" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">PSD equation</figcaption></figure><p>We normalize and get the following equation. you can see the <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/mhnlakgilnojmhinhkckjpncpbhabphi">short paper here</a> to get into the detailed proofs and how we got here:</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1095d912f2f37112fe212fe7c67933711c374874b443b47347920b08288a3694.png" alt="LoOP equation" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">LoOP equation</figcaption></figure><p>to simplify you can think of</p><ol><li><p>PLOF as the actual density around some point o</p></li><li><p>nPLOF as the standard deviation of the PLOF values (and root(2) as a normalizing constant)</p></li><li><p>erf = <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Error_function">gaussian error function</a> <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.reddit.com/r/askscience/comments/3icg5p/why_do_logistic_function_error_function_and/">= cdf of gaussian</a> that turns he input into a probability</p></li><li><p>we ignore negatives</p></li></ol><p>so percentages seem more accurate then scores.</p><p>but maybe not.</p><p>if we have a 100% confidence, what does that mean? are we really that certain?</p><h2 id="h-1f-local-correlation-integral-loci" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1F) Local Correlation Integral (LoCI)</h2><p>the whole issue above is some how we need to choose the perfect value for the hyper parameter k in our Nearest Neighbor approach.</p><p>instead we use a maximization approach</p><p>essentially, we use all possible values of k and take the max score, much like the ensemble method recommended for LoF.</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.cs.cmu.edu/~christos/PUBLICATIONS/icde03-loci-tr.pdf">view the details</a> here bc its very mathy</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/fd700ca81d393e470b7070a40f7d4bc249b21e4d8af08dbc7e1776ddb3b77c57.png" alt="lots of math" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">lots of math</figcaption></figure><p>however, removing the k problem comes w a price -O-</p><p>we take $$O(n**3)$$<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.simplilearn.com/big-o-notation-in-data-structure-article#:~:text=Big%20O%20Notation%20is%20a%20tool%20used%20to%20describe%20the,bound%20of%20an%20algorithm&apos;s%20runtime."> time</a> ;(((( &lt;read: so sad&gt;</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/429d8bfecfed18cd8cf774b82f9ee1730be86e6b6179f7a8573f5684d066dccc.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-1g-approximate-local-correlation-integral-aloci" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">1G) Approximate Local Correlation Integral (aLOCI)</h2><p>hehehe use <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Quadtree">quad trees</a> to approximate &gt;;) the aLOCI <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.cs.cmu.edu/~christos/PUBLICATIONS/icde03-loci-tr.pdf">math is here</a></p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/8842d825ddff82460c36d2da7c8a5179225d61b70b99d44594f14c12d51146c6.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>now we got <em>O</em>(<em>NLdg</em> + <em>NL</em>(<em>dg</em> + 2<em>d</em>)) as run time !!!!!</p><p>where</p><p>d = number of dimensions (features we have per data point)</p><p>L = tree depth</p><p>N = input size (as usual)</p><p>g = number of quad trees to be used</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/b542b82413c0b9785af3215e15d161d2f0e9eb4131ad705d5a1323cd87899e7e.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>but not yet!</p><p>sometimes its good, some times its bad &lt;read: its like a human&gt;</p><p>it turns out you need N trees instead of g</p><p>so we have O(N**2) for a reliable output ;(</p><p>next, we’ll take a look into using clustering techniques to avoid using k-values as a possible way to get away from the mystery k problem! &lt;read: special k&gt;</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ced40edd7c98e8fdfc191e36f96be2d5f3ef66506bd0781458269098d4ab0b57.png" alt="no more special k" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">no more special k</figcaption></figure><p>subscribe to stay updated on the next post!</p>]]></content:encoded>
            <author>0xabaki@newsletter.paragraph.com (0xAbaki)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/a88a6bf839912367aca86ae7a97931e89bc430686d0342085b3f5c7affee086c.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[[翻訳]Polkadot 2021年のラウンドアップ]]></title>
            <link>https://paragraph.com/@0xabaki/polkadot-2021</link>
            <guid>2GjSSuvgEVJKG3VZQEIq</guid>
            <pubDate>Wed, 12 Jan 2022 19:20:22 GMT</pubDate>
            <description><![CDATA[翻訳 https://medium.com/polkadot-network/polkadot-2021-roundup-6cbd3b50c50e 以上の記事の翻訳です。 問題や質問がある場合はTwitterで@KentaroVadneyを連絡してください！（テクニカルなものは英語の方が良いですが日本語も OKです） 今年もホリデーシーズンが近づいてきましたが、新年を迎えるにあたり、Polkadotプロジェクトが2021年に達成したことを簡単に振り返ってみましょう。 今では、Polkadotの中心となる技術のコード量を見ることから始めるのが、むしろ恒例となっています。Polkadotのエコシステム内での開発は急速に進んでおり、Polkadotのコア部分も決して劣ってはいません。PolkadotとKusamaの両方のRelayチェーンを動かすSubstrateリポジトリや、エコシステム内のすべてのparachainは、50万行のコードにわずかに及んでいます。さらに、Polkadot、Cumulus、Smoldotのコードベースを加えると、75万行強になります。しかし、これらの主要な...]]></description>
            <content:encoded><![CDATA[<p>翻訳</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://medium.com/polkadot-network/polkadot-2021-roundup-6cbd3b50c50e">https://medium.com/polkadot-network/polkadot-2021-roundup-6cbd3b50c50e</a></p><p>以上の記事の翻訳です。</p><p>問題や質問がある場合はTwitterで<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/KentaroVadney">@KentaroVadney</a>を連絡してください！（テクニカルなものは英語の方が良いですが日本語も OKです）</p><p>今年もホリデーシーズンが近づいてきましたが、新年を迎えるにあたり、Polkadotプロジェクトが2021年に達成したことを簡単に振り返ってみましょう。</p><p>今では、Polkadotの中心となる技術のコード量を見ることから始めるのが、むしろ恒例となっています。Polkadotのエコシステム内での開発は急速に進んでおり、Polkadotのコア部分も決して劣ってはいません。PolkadotとKusamaの両方のRelayチェーンを動かすSubstrateリポジトリや、エコシステム内のすべてのparachainは、50万行のコードにわずかに及んでいます。さらに、Polkadot、Cumulus、Smoldotのコードベースを加えると、75万行強になります。しかし、これらの主要な3つのリポジトリ以外の場所で作業することも増えています。</p><p>サブストレートベースのチェーンを扱うツールは、トランザクションの処理、チェーンの履歴の確認、何が起こっているかの検査、チェーンのテストなど、豊富に存在します。これらをすべて足すと30万行になり、合計で100万行をはるかに超えています。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6a49bb773d740bde2e23beef346029c5320e806a7546ff0a4ce2b5a90dcd48d8.png" alt="Polkadotのコードベースに投稿されたコードのライン数。大きな緑色の部分は、Polkadotがスケールするシャードの安全性と分散性を確保するために、1年間に書かれた膨大な量のロジックを示していますが、この組み合わせを機能させるのは困難です。" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">Polkadotのコードベースに投稿されたコードのライン数。大きな緑色の部分は、Polkadotがスケールするシャードの安全性と分散性を確保するために、1年間に書かれた膨大な量のロジックを示していますが、この組み合わせを機能させるのは困難です。</figcaption></figure><p>スマートコントラクトの分野では、Inkコントラクト言語とツール、Substrate EVM（イーサリアム）互換プラットフォームのFrontierを含めて、さらに約20万行が書かれています。また、javascriptベースのAPI、UI、部分的な実装であるPolkadot-JSは、さらに60万行ほどあります。このプロジェクトの全体的な野心を考えれば、それほど驚くべきことではないかもしれないが、それでも私が昨年60万行程度と見積もったときに比べれば、驚異的な量のコーディングが行われたことになる。</p><p>ElementのSubstateとParachainのテクニカルチャンネルには、12ヶ月前の2,600人から、現在では約1万人の開発者が集まっています。そして、300人以上（300人！）の個々の貢献者が、サブストレートのコードベースに変更を加え、6,000以上の改善を行っています。開発者コミュニティから6,000以上のスターを獲得し、約2,000回フォークされており、いずれも1年間で倍増しています。</p><p>また、Polkadotでのステークスも大幅に増加しています。昨年は、Polkadot上の約6,000の個人アカウントがノミネートを行い、Polkadotネットワークの経済的な安全性の確保に貢献しました。今年は、Substrateのステーキングロジックの改善に加え、Polkadotの2万以上のアカウントが合計297人のバリデータを選出し、ネットワークの安全性を維持している。</p><p>この記事を書いている時点で、Polkadot treasuryは約20万DOT、Kusama treasuryは約7万KSMを1,000件以上の資金提供を行ったチームや個人に配っている。Polkadot社の資金は2,200万DOT以上、Kusama社の資金は50万KSM以上となっています。詳細については、素晴らしいdoTreasuryのサイトをご覧ください（このサイトは、まさに各トレジャリーに支えられています）。</p><p>今年の終わりには、31のサブストレートベースのメインネットが稼動しています。PolkadotとKusamaの様々なパラケインでは、約300万のユーザーアカウントが作成され、6,000人のバリデーターによって運営されています。540のフォークレス・アップグレードが管理されており、そのほとんどが分散型のガバナンス・プロセスによって行われている。 私たちのエコシステムは、投資の観点からも急速な成長を続けており、現在、約350のチームで構成されていると推定しています（昨年の推定値より約250増えています）。2021年だけでも、そのうちの約50チームが6億7,000万ドル以上のアーリーステージの資金調達を行いました（シードラウンドおよびシリーズA）。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>🚀ローンチ</p><p>2020年はPolkadotにとってメインネットのリリースという極めて重要な年だったため、2021年に大きな挑戦をするのは難しいと思われていました。しかし、2021年は期待を裏切らなかったと言ってもいいでしょう。1つだけでなく2つのリレーチェーンネットワークでパラチェーン、スロットオークション、クラウドローンが展開された素晴らしい1年でした。年初には草間、12月にはPolkadotが稼働しました。 PolkadotとKusamaがパラカインをホストするためには、それぞれのパラカインがリレーチェーンと同等のセキュリティを保証して動作するように、特別なロジックを設計・記述する必要がありました。このセキュリティと十分な分散性、そしてスケーラビリティを両立させることは、決して軽視できるものではありません。Polkadotのシャーディングロジックが完成したら、パラケインを起動する前にライブチェーンにロールアウトする必要がありました。ここではっきりさせておきたいのは、私たちはモノチェーンをシャード化された「マルチチェーン」に移行しようとしていたということです。それも、いわゆるヘテロジニアスなマルチチェーンで、シャードがそれぞれ特定の仕事を非常に効率的にこなすことに特化したものです。それも、フォーチュン500に名を連ねる企業の大半に匹敵する規模のネットワーク上で行われなければなりませんでした。</p><p>WebAssemblyメタプロトコールの威力が問われるとしたら、このエピソードは必ずや圧巻のレポとなるだろう。Substrateのガバナンスとライブアップグレードシステムは、不可能に近いことをありふれたことのように見せ、少なくともブロックチェーンの領域では、魔法とほとんど区別がつかないほどでした。ブロック#7,229,126において、Polkadotメインネットのノードは、拘束力のある分散型の投票プロセスを経て、それぞれランタイムバージョン9110にアップグレードしました。世界初の試みとして、世界中に散らばる数千のノードが、数千人の異なる人々によって運営され、次のブロックをオーサリングして作成するのにかかる時間と同じくらいの時間（約6秒）で、「通常の」モノチェーンの維持から、シャード化された異種混合マルチチェーンの運営を支援することになりました。</p><p>それからしばらくして、Polkadotで最初のparachainがShellチェーンで開始されました。Shellの仕事は、パラケインのシートを暖めることで、後に一般的なStatemintのパラケインにアップグレードできるようにすることでしたが、しばらくして12月に登場しました。Statemintの他にも、いくつかのコミュニティ・パラケインが立ち上げられました。どのチームが最初に立ち上げるかを決めるために、5つのパラケインの枠が2年間のリース契約でオークションにかけられ、最高額の入札者が選ばれました。</p><p>Polkadotは、最初の5つのオークションを終え、数日前にそれぞれのチームが立ち上がるのを見て、立ち上げプロセスの最終段階を終えました。この最初の数スロットを貸し出すために、全体で1億DOT（1億600万ドル、総供給量の9％に相当）を超える資金が2年間にわたって確保されました。Rococoのテストネットで行われた広範なテストにより、PolkadotとKusamaの5つのパラチャンは、スロットが稼働した瞬間にブロックを生産しました。 12月23日から3月10日までの間に6回のオークションが行われています。技術的な問題がなければ、2022年に向けてオークションはほぼ継続されるものと思われます。</p><p>一方、Kusamaは現在16のパラケインを立ち上げており、2週間後にはさらに5つのパラケインを立ち上げる予定です。草間では、わずか16個のパラケインで、300万KSM以上が12ヶ月間固定されたことになります。パラセインの詳細については、Parachains.infoを参照してください。</p><p>パラッヘインが導入されたことで、Rococoはパラッヘインの新しいロジックのテストネットとしての当初の価値を失いました。しかし、少し前に開始された、コミュニティ・パラケインのテストネット・ハブとしての新しい目的があります。コミュニティのチームは、自分たちのパラケインを搭載して、XCMなどの技術をリスクのない環境でテストすることができます。</p><p>2021年には、いくつかの重要なサードパーティサービスが開始されました。強力なマルチチェーンインデクサーサービスであるSubSquidとSubQueryが登場し、エコシステムで広く採用されました。SubSpaceとOnFinalityは、Kusamaアーカイブプログラムを立ち上げ、Web3技術を使ってKusamaパラチェインエコシステム全体のすべてのチェーンデータをアーカイブしました。機関投資家向けでは、ドイツテレコムがPolkadotのセキュリティとメンテナンスに参加することを発表しました。ドイツテレコムは、DOTトークンを取得し、PolkadotとXCMP（独立したパラチェインが相互に信頼できる通信を行う方法）を普及させる手段として、バリデータノードを運用していると述べた。また、約1年前の2021年初頭には、Fireblocks（機関投資家向けの暗号カストディアン）がDOTの保有とステークのサポートを発表している。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>テクノロジー</p><p>Polkadotの様々な機能の開発が進む一方で、2021年にはPolkadotのエコシステムを構成するいくつかの核となる部分がリリースされた。新しいメタデータのフォーマットは、エコシステムの多くの開発者にとって大きな変化を意味し、開発の摩擦を最小限に抑え、バグが発生する可能性を低減します。</p><p>メタデータは、Polkadot、Kusama、Substrateベースのパラカインに接続する様々な異なるシステムを検査し、理解し、取引するために非常に重要です。ブロック探索者、ダッシュボード、採掘作業、取引所、ユーザーインターフェースなど、すべての人が、オンチェーンのビジネスロジックが何をしているのか、豊富な情報を得る必要があります。基質チェーンはそれぞれの業務に合わせて大きくカスタマイズされており、処理する情報を効果的に表現するために複雑なデータ型を導入することが多いため、このような困難な作業はさらに困難になっています。さらに、サブストレートは業界屈指のアップグレード性を備えているため、チェーン上でコアロジックをアップグレードすることで、データタイプが随時変更される可能性があり、さらに困難を極めます。</p><p>新しいメタデータシステムでは、Rust言語の開発者がオンチェーンのビジネスロジックを書くことで、様々なデータタイプの詳細を知りたいと思う遠く離れたシステム（通常は異なる言語で書かれ、異なるプラットフォーム上で動作している）が、完璧に、手間をかけずにそれを行うことができ、起こりうる変更にも対応することができます。 Polkadotで今年行われたもう一つの大きな成果は、XCMのバージョン2です。これは、Polkadotのメッセージフォーマットで、異なるコンセンサスシステムの相互作用を容易にするものです。XCM v2 は XCM の最初の「プロダクション・レディ」バージョンで、ここ数週間のうちに Polkadot でデビューし、Polkadot のガバナンスから Statemint のパラケインとなる部分にアップグレードの指示が伝えられました。</p><p>XCMの現在の主な目的は、チェーン間で様々な形の資産移動を可能にすること、また、お互いを知っているチェーンがそれぞれの専門的な機能と相互作用できるような一般的な取引層を提供することです。また、バージョンを意識することで、チェーンが自分のタイミングでアップグレードできるようになり、アップグレード前の他のチェーンとのコミュニケーションを失う心配がなくなります。また、エラーの検出や報告、メッセージの最後に不意に使われなかった資産を捕捉する特別な「セーフティネット」など、予期せぬ事態に備えた機能も備えています。</p><p>また、Polkadotのステーキング技術も2021年に入って進化しています。サポートできるノミネーターアカウントの数は、2020年末の6,000から、今年のピーク時には22,000へと3倍に増えています。これは主に、ステーキングの選出が複数のステージで行われるように変更したことで起こった。</p><p>また、チェーン上のビジネスロジックを簡単に使い捨てできるモジュールを実現するAPIとフレームワークであるFRAMEも全面的にアップグレードされ、現在ではすべてのパレット（モジュール）が、よりクリーンでイディオム的な手続き型マクロを利用するようになりました。2021年には、PolkadotのトークンとNFTの機能をそれぞれ解放するAssetsとUniquesを含むいくつかのパレットが追加されました。StatemineチェーンとStatemintチェーンでは、これらのパレットをコア機能として利用しています。</p><p>また、Substrateのコードベースには、数多くの基本的な改良が静かに加えられています。特に、最高のパフォーマンスを必要とするSubstrateチェーンのために特別に設計された、高度に最適化されたブロックチェーンデータベースであるParityDBの運用が可能になりました。Substrateチェーンがスマートコントラクトプラットフォームのような低速なダイナミックメータリングを必要としない理由であるツール、特にウェイトシステムは、発売に向けて磨きがかかっています。</p><p>また、Smoldotも水面下で進んでいます。Smoldotはパートタイムのプロジェクトとして始まったもので、Substrate/Polkadotノードの代替実装であり、大規模なデータベースを保持してすべてのトランザクションを実行することが現実的でない、リソースに制約のある環境で特にうまく動作するように設計されています。Smoldotは、WebページやRaspberry Piなどの環境でPolkadotとそのSubstrateベースのパラケインを使用することが実用的であることを実証しました。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>ソーシャル＆サイト</p><p>昨年最初に起こったことの一つは、ネットワークのオンチェーンガバナンスによってPolkadotのリブランディングが承認されたことであった。その数ヶ月後、Polkadotは2,000人以上のDOTホルダーの投票により、独自のブランドを決定した世界初の世界的な分散型システムとなった。DOTの所有権と個性のバランスを取り、幅広い層に受け入れられる結果を出すために、二次投票システムが採用された。</p><p>Polkadotのオンラインでの成長は2021年に入ってからも続いており、ウェブサイトのページビューは約200万で、そのうちユニークユーザーは約4分の1と、前年の約4倍となっています。ツイッターのフォロワー数は、2020年末の10万人弱から現在は100万人を超え、Wechatの登録者数は、2020年の1万8千人から現在は5万人近くと、10倍以上に増えています。一方、草間さんのツイッターのファン数は、約3万人から20万人以上と、やや控えめながらも500％以上の大幅な伸びを示しています。</p><p><strong>その他のオンラインメディアでも、Polkadot Redditのメンバー数は7万人、Discordは2万人を超えています。YouTubeチャンネルの登録者数は4万人を超え、110万人の視聴者が126,200時間に及ぶPolkadotの教材を視聴しています。また、この1年間で、PolkadotやSubstrateに関連する数多くの記事やニュース、ビデオを公開してきました。</strong></p><p>一方、Polkadot Wikiは2021年に大きく改訂されました。160人の寄稿者がコンテンツを作成し、1年間で150万人の訪問者と320万回のページビューを記録しました。アンバサダープログラムも2021年まで継続され、候補者とアンバサダーの総数は2,391人にまで増加しました。</p><p>Elementのシンプルなチャットルームでは、24時間体制の技術的なQ&amp;Aを行うには最適なフォーラムではないことが明らかになったため、特に過去の回答を検索できるという点で、Stack Exchangeに注目しました。数ヶ月の間に「自分を証明する」というプロセスを経て、サブストレートのベータ版Stack Exchangeサイトが完成しました。この取り組みに関わったすべての人に感謝します。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>共に歩む</p><p>パンデミックにもかかわらず、今年は多くのコミュニティイベントが開催され、世界中で約400のミーティング（オフラインとハイブリッドの両方）が開催されました。コミュニティ主導のオンラインイベントはさらに大規模で、多くのイベントに数百人が参加し、Polkadot Koreaのミートアップには1,500人以上が登録しました。 今年の5月に開催された「Polkadot Decoded」は、Polkadotコミュニティにとって最大のカンファレンスとなりました。コミュニティが選んだ40人以上のスピーカーが参加し、パラケインやNFTからプライバシーやアイデンティティに至るまで、あらゆる分野の講演が行われました。ライブ配信には、2020年の4倍となる2万7千人以上が登録しました。 しかし、Decodedは、「Biggest Polkadot Event of all time（史上最大のポルカドットイベント）」の称号を得た最近のParachain Launch Partyには及びませんでした。220,000人もの人々が、受賞したパラケインの各創業者やPolkadot社のキーパーソンとの対話を楽しみました。</p><p>また、PolkadotとSubstrateは、暗号エコシステムの最大のカンファレンスでも話題になりました。Coindesk Consensus、Messari Mainnet、Unfinished Live、Paris Blockchain Week、ETH Denver、EthCC Paris、Blockchance Europe、Digital Euro Summitなどがその例です。</p><p>2021年の中国での活動では、コミュニティや地元のパートナーとともに50以上のオンライン・オフラインのイベントやプレゼンテーションを行いました。その中には、Wanxiang Blockchain Summit、World Blockchain Conference、CNBC East Tech Westなど、最も注目されているブロックチェーンイベントに招待され、PolkadotとSubstrateを紹介する機会もありました。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/d7a5fc992f07629e61551266ff26a014d1f0837423e5c8b0283c422c08ece15d.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h3 id="h-2021wanxiang-blockchain-summit" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">2021年のWanxiang Blockchain Summitの様子。</h3><p>2021年の間に、1000人以上の開発者が10のSubstrateコースのいずれかに参加し、そのうち70％が卒業しました。一方、4つのハッカソンでは、50チームが当社のエコシステムでプロジェクトを構築し、そのうち10チームはすでにAcalaやAstarなどのリレーチェーンの枠を獲得したり、クラウドローンで枠を入札したりしています。 これとは別に、アメリカ、ヨーロッパ、中国の50以上のプロジェクトから選ばれた12チームが「Web 3.0 Bootcamp」を卒業しました。このブートキャンプは、インキュベーションと教育を目的としたハイタッチプログラムで、4つのオンラインパネル、定期的なチェックイン、数々の啓蒙活動、公開講座、1対1のセッションなど、全面的な支援を行うことで、チームが成功する可能性を最大限に高めました。AcalaやMoonbeamなどの卒業生チームは、すでにKusamaやPolkadotのパラチェンスロットを獲得することに成功しています。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>🧑💻サブストレート・ビルダーズ：プロジェクトとの連携</p><p>サブストレート・ビルダーズ・プログラムが始動しました。2021年には163のチームが新たにプログラムに応募し、36チームが幸運にも合格しました。プログラムに参加しているチームには、1年間で53のテクニカルレビューが実施され、11チームが設定されたマイルストーンをすべて達成しました。</p><p>今年のハイライトとしては、Ajuna Network社がSubstrateを使ってUnityやUnrealを使用するためのフル機能のSDKを発表したことが挙げられます。メタバーズとゲームのプラットフォームであるBit.Countryは、経済、ガバナンス、グローバルNFTマーケットプレイスのロジックを完成させ、最初のマイルストーンを達成しました。SubSpace (substrate-based scalable platform for storage and computation) は、Proof-of-Archival-Storage と呼ばれる新しいコンセンサスメカニズムの初期作業を完了し、この素晴らしい新技術のテストネットである Aries Test Network を立ち上げました。</p><p>また、インフラ面では、プライバシー重視のDeFi向けミドルウェアスタックであるAutomata Networkが、ERC20トークンによるクロスチェーンブリッジとカナリアネットワークであるContextFreeの立ち上げで、マイルストーンの1つ目を達成しました。 アセット面では、Chainflip Labs（クロスチェーン・アセット・スワップのスペシャリスト）が、Ethereumのテストネットと主要なState-chainテストネット（当然サブストレートベース！）に技術を導入して2つ目のマイルストーンを達成し、DeFiに高速取引をもたらす分散型取引所のFirefly（né dTrade）が、KusamaのMoonriverに導入して3つ目のマイルストーンを達成し、PolkadotのMoonbeamに導入する計画を最終的に決定しました。また、4月にはChainlink社がPolkadot社のコミュニティに素晴らしいニュースを提供した。Chainlink社のオラクルサービスがSubstrateベースのすべてのチェーンで利用可能になったことで、パラチェーンが必要に応じて効果的に利用できるようになったのだ。 レイヤ0プラットフォームである（あるいは世界で唯一の）当社のレイヤ1プラットフォームは、独自のビルダー・コミュニティを構築しています。AstarとMoonbeamは、独自のビルダープログラムを立ち上げました。</p><p>Parityでは、2021年の間にチームが200人になるなど、大幅な事業拡大が行われています。Parityのチームはこれまでと同様に世界中に広がっていますが、新規採用の一部はロンドンに集中し、世界各地でのプレゼンスも拡大しています。また、Web3 Foundationでは、Bertrand Perezを最高執行責任者に迎えたのを皮切りに、いくつかの優秀な人材の採用を進めています。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>🙌 Look, no scams</p><p>2021年には、Web3 FoundationとParity Technologiesの人々が集まってAnti-Scamチームを結成しました。詐欺対策のために、Polkadotの財務省とWeb3 Foundationからさらに13万ドルが支出された。 この1年間で、コミュニティによって460以上の詐欺サイトが特定され、全体で1,000近くのサイトなどが削除されました。これを奨励するために、550DOTの報奨金が報告した人たちによって主張され、与えられました。フィッシングや詐欺に関わるサイトやアドレスの総合的なリストであるフィッシング・リポジトリには、現在2,300以上のエントリがあります。 2022年には、アンチ・スキャム・コミュニティ・イニシアチブが進化し、詐欺サイト以外にも多くのものをカバーするようになり、コミュニティ主導となり、他のエコシステム・プロジェクトやチームと協力して、初のオンチェーン・分散型詐欺対策キャンペーンの基礎を築くことになるでしょう。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>ベスト・フット・フォワード</p><p>12ヶ月前に書いたことを振り返ると、私はCovidの制限から物理的にもう少し自由になり、暗号産業の社会的中心にあるグローバルなミートアップ文化に戻ることを期待していました。残念ながら2021年には実現しませんでしたが、2022年には少しでも良い方向に向かうことを期待しています。私自身は、久しぶりに重慶火锅と水炊きを楽しみたいと思っています。</p><p>旅行への期待はさておき、2021年は最終配送の年であり、2016年に最初の白い（まあ...水玉ですが🙌）紙をリリースして始めた章が終わりました。2022年は、これまでのどの年よりも、Polkadotの物語の次の章の始まりです。2022年は、Polkadotの物語の次の章の始まりです。Polkadotが提供する単一のセキュリティ・アンブレラの下で、スケールの大きいハイパーコネクティビティが実現され、より多くのパラチェーン・チームがオークションに参加し、Polkadotのパーティーに参加することになるでしょう。様々な目的を持った150以上のチェーンが開発中で、その多くはすでにテストネットを持っており、多くの期待が寄せられています。また、PolkadotとKusamaをつなぐParityのブリッジや、PolkadotとEthereumをつなぐSnowforkのブリッジなど、分散型ブリッジの立ち上げも楽しみのひとつです。 コアの部分では、コードのリファクタリングと最適化に時間をかけ、メッセージパッシングに関連するコストとレイテンシーを削減するための新しい技術を導入する予定です。私たちの目標は、Polkadot の各パラケインがシャードごとに 1,000 sTPS の目標に向かって前進できるようにすることです。(sTPSとは、我々の標準的なTransactions Per Secondのことで、トランザクションとしてカウントされるクロスチェーンの標準であり、基本的には、ある既存の口座から別の既存の口座への、そのブロック内でどちらの口座からも読み書きされていない状態での残高移動を意味する)。</p><p>これにより、オークションに参加していないチームでも、Polkadotが保証するセキュリティを確保しつつ、XCMPの利点をすべて享受することができる。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>最後に...</p><p>またしても最後になってしまいました。今年も残すところあとわずかとなりましたが、皆様の年末年始のご多幸と、新年のご多幸をお祈り申し上げます。</p><p>ーー</p><p>記事を気に入ったらチップご検討お願いします；）</p>]]></content:encoded>
            <author>0xabaki@newsletter.paragraph.com (0xAbaki)</author>
        </item>
        <item>
            <title><![CDATA[「翻訳」Foundry Ethereum開発ツールボックスの紹介 -]]></title>
            <link>https://paragraph.com/@0xabaki/foundry-ethereum</link>
            <guid>2xChgOAqo3Dnkzqwyqn3</guid>
            <pubDate>Wed, 12 Jan 2022 19:04:45 GMT</pubDate>
            <description><![CDATA[https://www.paradigm.xyz/2021/12/introducing-the-foundry-ethereum-development-toolbox/ 以上の記事の翻訳です。 問題や質問がある場合はTwitterで@KentaroVadneyを連絡してください！（テクニカルなものは英語の方が良いですが日本語も OKです） 12..72021 | Georgios Konstantopoulos 作 私 たち がここ数ヶ月間開発してきたプロジェクトを発表できることを嬉しく思います。 Foundry です。 Foundryは、 Ethereumアプリケーション開発のための、ポータブルで高速なモジュール式ツー ルキットです。なぜ Foundry？設定やサードパーティのライブラリなしですぐに動作する、最速かつ最も柔軟な Ethereum開発 環境 を求めるなら 、 Foundryのツールである forge と cast を使うべきです。 謝辞を述べます。 Foundryは、テストフレームワーク dapptoolsを再実装したものです。Rustで書かれており、非常に高...]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/2021/12/introducing-the-foundry-ethereum-development-toolbox/">https://www.paradigm.xyz/2021/12/introducing-the-foundry-ethereum-development-toolbox/</a></p><p>以上の記事の翻訳です。</p><p>問題や質問がある場合はTwitterで<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/KentaroVadney">@KentaroVadney</a>を連絡してください！（テクニカルなものは英語の方が良いですが日本語も OKです）</p><p>12..72021 | G<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/team/gakonst/">eorgios Konstantopoulos </a>作</p><p>私<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/graphs/contributors"> たち がここ</a>数ヶ月間開発してきたプロジェクトを発表できることを嬉しく思います。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry">Foundry です</a>。</p><p><strong>Foundry</strong>は、 <strong>Ethereum</strong>アプリケーション開発のための、ポータブルで高速なモジュール式ツー ルキットです。</p><h2 id="h-foundry" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">なぜ Foundry？</h2><p>設定やサードパーティのライブラリなしですぐに動作する、最速かつ最も柔軟な<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/cast"> E</a>thereum開発 環境 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/cast">を求めるなら 、 Foundryのツールである forge と cast を使うべきです。</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/dapphub/dapptools">謝辞を述べます。 Foundryは、テストフレームワーク dapptoolsを再実装したものです。Rustで書かれており、非常に高速で インス</a>トールしや すく、より多くのコントリビューターに親しまれるようになっています。私たちのコードベース はフォークではありませんが（複数の</p><p>SOLCバージョンをサポートするなど、多くの追加機能を持 っています）、 DappHubチームの長年にわたる革新的な仕事がなければ、このようなことはでき ませんでした。ありがとう、 DappHub!</p><p>以下の Ethereum開発のヒントに同意するなら、 Foundryはあなたのためのものです。</p><h2 id="h-solidity" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">テストは <strong>Solidity</strong>で書くべきです。</h2><p>ほとんどの開発者は未だに Javascriptや Typescriptを使って Solidityをテストしていますが、これは素 晴らしいことではありません。</p><p>JSでテストを行うには、多くの定型文、大きな依存関係（ node_modules/を見ています）、設 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/paulrberg/solidity-template">定ファイルが必要</a>になります。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/paulrberg/solidity-template">例として、 Paul Berg氏の solidity-templateを見てみましょう。 (https:// github.com/paulrberg/solidity-template)を参照し てください。</a></p><p>さらに、 Ethereumの数値を JSで表示するには、 bignumber.js、 BigNumber、 bn、または JSの新しい ネイティブな BigIntなどの BigNumberライブラリを使用する必要がありますが、これらは頻繁に非 互換性の問題や生産性の低下を引き起こします。</p><p>最後に、 Solidityではなく JSでテストするということは、実際にテストしたいものから抽象度 1を 下げて操作することになり、最低でも Mochaと Ethers.jsまたは Web3.jsに精通している必要があ ります。これは、 Solidity開発者の参入障壁を高めることになります。</p><p>Forgeでは、 Solidityでテストを書くことができるので、重要なこと、つまり良いテスト を書くことに集中することができます。シンプルな Solidityのテストは次のようなもの です。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/1147fd2691676488dce7ac3a29c5bf2523615d4309e9be879667050777791489.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">関数をファジングする必要があります。</h2><p>コード内の全ての関数をユニットテストし、 100%のテストカバレッジを得ようとしたとして も、テストしなかったエッジケースがあるかもしれません。 Fuzzingでは、 Solidityのテスト関 数に引数を与えるだけで、 Solidityのテストランナーがランダムに引数を選択してくれます。</p><p>上記のスマートコントラクトのファズテストの例を示します。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/ac0ad8e78b7934edcd1c486c4c2f4fad6ff8854c70861894c6a2e5f69ce437cd.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>ファザーはこの関数をランダムな xの値で自動的に試します。テストを失敗させるような入力 を見つけたら、それをあなたに返しますので、バグを修正した後にリグレッションテストを作 成することができます。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/6b20278bab0556d77d8014846cd2dbdea24055e78fefb3ad4632525962368c2b.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>このテストを実行すると、 CLIで以下のようなレスポンスが得られます。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/623ebcdb778322021f1543367f61a43e2d1bde175d15a047b8bdba978e99eeaf.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>また、縮小もサポートしているので、コードが失敗するような「最小限」の反例を得るこ とができます（例えば、非常に大きな数字やバイト文字列ではなく）。</p><h2 id="h-vm" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">テストで <strong>VM</strong>の状態をオーバーライドすることができるはずです。</h2><p>特定のブロック数を必要とする機能をテストしようとしたことはありますか？確かに、 RPCメソ ッド evm_mineを呼び出すことはできますが、 Compound Governanceのコントラクトをテストして</p><p>いて、 40,000ブロックを進める必要がある場合はどうでしょうか？</p><p>メインネットのトランザクションをシミュレートして、自分のアカウントに特定のトークンの残 高を与えたり、許可された機能への書き込みアクセスをしたいと思ったことはありませんか？</p><p>これらの問題を解決するために、我々は VMチートコードを提供し、 テスト実行時に VMの 状態 を 変更できるようにしています。 これは、事前に設定されたアドレスに存在するコントラクトを 介してテスト作成者に公開されます。以下の簡単な例では、ブロックのタイムスタンプを上書きする方法を示しています。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/25ad5d62119c8b2703af5cd2a9a400b5afcda9e89aa7b382caa4f77fc5b5bf84.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/forge#cheat-codes">その他のチートコードについての詳細は、 READMEを参照し</a>てください。チートコ ードは非常に強力です</p><p>(例 : store では任意のコントラクトストレージスロットを上書きでき、</p><p>prank では任意のアカウントから任意の電話をかけることができます )。テスト <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/blob/master/evm-adapters/src/sputnik/cheatcodes/cheatcode_handler.rs#L249-L397">が探索する コ</a>ード パスを拡張するためにチートコードを使用することをお勧めします。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/blob/master/evm-adapters/src/sputnik/cheatcodes/cheatcode_handler.rs#L249-L397">また 、 新しいチートコードを 投稿することも お勧めします。</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/blob/master/evm-adapters/src/sputnik/cheatcodes/cheatcode_handler.rs#L249-L397">(https:// github.com/gakonst/foundry/blob/master/evm-</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/blob/master/evm-adapters/src/sputnik/cheatcodes/cheatcode_handler.rs#L249-L397">adapters/src/sputnik/cheatcodes/cheatcode_handler.rs#L249-L397) </a>となっています。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">稼動中のネットワークの状態に対してテストを実行できるようにす る必要があります。</h2><p>多くの Ethereum開発ツールと同様に、 Forgeはノードの URL（アーカイブノードを持っている場 合は、テストを ブロック に 固定するために、オプションでブロック番号も ）を指定することで、リモートネットワークの状態に対する「フォーク」をサポートしています 。</p><p><code>forge test --fork-url &lt;your node url&gt; [--fork-block-number &lt;the block number you want&gt;]</code>.</p><p>を実行する だけです 。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">テストを実行している間、デバッグ情報をログに記録することがで きるはずです。</h2><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/dapphub/ds-test/blob/0a5da56b0d65960e6a994d2ec8245e6edd38c248/src/test.sol">Forge は、 ds-testの emit log_ 関数と、 </a>Hardhat の <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://hardhat.org/tutorial/debugging-with-hardhat-network.html">console.log を使って</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/dapphub/ds-test/blob/0a5da56b0d65960e6a994d2ec8245e6edd38c248/src/test.sol">、 ランタイムのデバッグログをサポートしています 。</a></p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">よしわかった。でも何から始めればいいの？</h2><p>Forgeと Castは、</p><p>cargo install — git <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry">https://github.com/gakonst/foundry</a> — locked</p><p>を実行する ことで インストール できます （ Rustは 、 まだインストールして い なければ、 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://rustup.rs/">ここ （https:::/// rustup. rs/）で イン</a>ストール でき ます ）。 また、 プラットフォーム ごとに スタティックビル ドされたバイナリ を配布したり 、 brewや aptパッケージ を提供する 予定 です 。 もしあなたが 以 前にプロジェクトの 自動 リリース フロー を行ったことが あれ ば、ぜひ 連絡 し てください！</p><p>インストール 後 は、 forge initで 新規 プロジェクト を作成し （デフォルト では カレント ディレクト リ に作成 ）、 forge buildを 行うだけです 。</p><p>なんと、&lt;2s&gt;でスタートしました。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">速度は？</h2><p>テスト速度を比較するために、いくつかの Dapptoolsリポジトリに対してベンチマークを行い ました。統合テストは <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/dapptools-benchmarks">こちら でもご</a>覧い ただけます。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/31cc745538b253a7a4bb37d89ea2ee6165e4f3361615a636d95d76dc333984e1.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/OpenZeppelin/openzeppelin-contracts">github.com/OpenZeppelin/openzeppelin-contractsを Forge と Hardhat で コンパイルしました。 Hardhatの コ</a>ンパイルには<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/msolomon44/status/1466198596772978689"> 15.244秒かかったのに対し、 Forgeで は 9.449秒でした。その他 のベンチ</a>マークも有望な（そしてニュアンスのある！）結果を示しました。もしかしたら、コンパイルとテストのためのフレームワークのベンチマークテストスイートが必要かもしれません。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ビジョン</h2><p>2020年夏、私たちは MEVトレーダーがより良いボットを作れるようにすることを標に、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.ethers.io/v5/">ethers.jsの R</a>ust移植版である et<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/ethers-rs/">hers-rs を書</a>くことから始めました。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/ethers-fireblocks/">その後、 MEV Inspect (https://github.com/flashbots/mev-inspect-rs)、 Ethers Fireb</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/onbjerg/ethers-flashbots/">locks (https ://github.com/gakonst/ethers-fireblocks/)、 Ethers Flashbotsなど</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/ethers-fireblocks/">の他のインフラを構築しました。</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/onbjerg/ethers-flashbots/">(https:// github.com/onbjerg/ethers-flashbots/)、 Ark</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/ark-circom/"> Circom など</a>があります。</p><p>optics<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/search?q=ethers-rs&amp;type=code">なども あります 。</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/ethers-rs/tree/master/ethers-solc">さて、私たちは、柔軟なコンパイルパイプライン（ ethers-solc</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/ethers-rs/tree/feat/ethers-compile/ethers-compile/src/fe"> を構</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/ethers-rs/tree/master/ethers-solc">築しました 。こ</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/ethers-rs/tree/feat/ethers-compile/ethers-compile/src/fe">のパイプラインは</a></p><ul><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/ethers-rs/tree/feat/ethers-compile/ethers-compile/src/fe">新しい言語 をサポートする 可能性があります</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/ethereum/fe">E</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/WilfredTA/ethers-rs/tree/feat/ethers-compile/ethers-compile/src/fe">VM</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/evm-adapters">上の抽象化</a></p></li><li><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/forge">高速なテストランナーなどがあり</a><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/evm-adapters"> ます。</a></p></li></ul><p>徐々にではありますが、確実に、次の 100万 1人の Ethereum開発者や起業家のために、モジュール化さ れ、文書化された、高性能なビルディングブロックを作成しています。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/blob/master/cli/README.md">Foundryの CLIの使い方の詳細は、 README をご覧ください。</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/forge#future-features">まだまだ追加したい機能がたくさんあり ます</a></p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry/tree/master/forge#future-features">dapp</a>toolsの機能<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry">パリティ</a>を指すため <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry">と、より新しいエキサイティングな機能を実現するための</a>両方 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/gakonst/foundry">)。 Githubで Foundryをチェックしてみてください。</a></p><p>最後に、パラダイムでは社内およびポートフォリオ全体で採用活動を行っています。ですべての募集職種を確認する か、 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="mailto:georgios@paradigm.xyz">georgios@paradigm.xyz</a> までご連絡をお願いします 。</p><p>謝辞 Matthias Seitz氏 、 Rohit Narurkar氏 、 Nick Ward氏、 11ts氏 、 Odysseas Lamtzidis氏 、 Brock Elmore氏、 Matt Solomon氏、 その他 ethers-rs / Foundryグループ チャット の 参加者 の皆様。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/team/gakonst/">Georgios Konstantopoulos (https://www. paradigm.xyz/team/gakonst/)</a></p><p>Georgios Konstantopoulosは、最高技術責任者（ CTO）であり、パラダイムのポートフォリオ企業 やオープンソース・プロトコルの研究を担当するリサーチ・パートナーでもあります。以前は、 独立したコンサルタントおよび研究者として、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/team/gakonst/">[→]（ https:/ www.paradigm.xyz/team/gakonst/）に </a>注力していました。</p><p>免責事項 ：この 投稿 は 一般的な 情報提供 のみを目的と しています 。 本 記事は、投資</p><p>助言 、投資 の 売買 の推奨 または 勧誘を構成するもの で はなく 、 い かなる 投資 決定 の メリット の評価にも使用すべきではあり ません。 また、 会計 、法律、税務 に関するアドバイス や 投資の 推奨 を目的として 依拠すること はできません。 この 投稿は、 執筆者 の現在の 意見を反映した ものであり、 Paradigmや その関連会社 を代表 して作成されたもの 連する 個人 の 意見 を反映した は、更新されること なく 変更されることで はなく 、 必ずしも もではありません。</p><p>ーー</p><p>記事を気に入ったらチップご検討お願いします；）</p>]]></content:encoded>
            <author>0xabaki@newsletter.paragraph.com (0xAbaki)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/17dab73f03fac5e3b30884093bc8299813cae50d7ea12ffc69b147052c92422e.png" length="0" type="image/png"/>
        </item>
        <item>
            <title><![CDATA[[翻訳]パラダイム-効果的なNFTローンチのガイド]]></title>
            <link>https://paragraph.com/@0xabaki/nft</link>
            <guid>bHy2zcWDVSUkdcL4LisK</guid>
            <pubDate>Wed, 12 Jan 2022 01:40:28 GMT</pubDate>
            <description><![CDATA[https://www.paradigm.xyz/2021/10/a-guide-to-designing-effective-nft-launches/ 以上の記事の翻訳です。 問題や質問がある場合はTwitterで@KentaroVadneyを連絡してください！（テクニカルなものは英語の方が良いですが日本語も OKです） 2021.10.13｜Hasu, Anish Agnihotri 作 目次ユーザー被害の例搾取可能な公正さガスオークション高い技術力ガスの非効率性排他的なミント信頼できるオペレーター良いローンチの目標曖昧さは悪いデザインの言い訳にはならないNFTローンチのアンバンドリングフェーズ1: 入札フェーズ2：クリアリングフェーズ3：配信フェーズ4: メタデータの公開当社の参考事例結論ブロックチェーンはオープンソースソフトウェアの資金調達に革命をもたらしましたが、最初からすべてがうまくいったわけではありません。実際、2016年から2018年の時代のICOは、製品を提供する前に創業者がキャッシュアウトできるという、恐ろしく壊れた仕組みであることが多かったのです。その後、...]]></description>
            <content:encoded><![CDATA[<p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/2021/10/a-guide-to-designing-effective-nft-launches/">https://www.paradigm.xyz/2021/10/a-guide-to-designing-effective-nft-launches/</a></p><p>以上の記事の翻訳です。</p><p>問題や質問がある場合はTwitterで<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/KentaroVadney">@KentaroVadney</a>を連絡してください！（テクニカルなものは英語の方が良いですが日本語も OKです）</p><p>2021.10.13｜Hasu, Anish Agnihotri　作</p><p>目次</p><ol><li><p>ユーザー被害の例</p><ol><li><p>搾取可能な公正さ</p></li><li><p>ガスオークション</p></li><li><p>高い技術力</p></li><li><p>ガスの非効率性</p></li><li><p>排他的なミント</p></li><li><p>信頼できるオペレーター</p></li></ol></li><li><p>良いローンチの目標</p><ol><li><p>曖昧さは悪いデザインの言い訳にはならない</p></li></ol></li><li><p>NFTローンチのアンバンドリング</p><ol><li><p>フェーズ1: 入札</p></li><li><p>フェーズ2：クリアリング</p></li><li><p>フェーズ3：配信</p></li><li><p>フェーズ4: メタデータの公開</p></li></ol></li><li><p>当社の参考事例</p></li><li><p>結論</p></li></ol><p>ブロックチェーンはオープンソースソフトウェアの資金調達に革命をもたらしましたが、最初からすべてがうまくいったわけではありません。実際、2016年から2018年の時代のICOは、製品を提供する前に創業者がキャッシュアウトできるという、恐ろしく壊れた仕組みであることが多かったのです。その後、多くの教訓が得られ、今日のプロジェクトでは、トークンをローンチする前に実用的な製品を用意し、それを配布することで利用のインセンティブを与え、ガバナンスを分散させています。</p><p>NFTは、暗号化された製品市場に適合するもう一つの明確な製品であることが証明されていますが、独自の成長の痛みを経験しています。NFTの寿命は、NFTのローンチ（ミントやドロップと呼ばれることもあります）から始まります。NFTのローンチでは、新しいコレクションが初めて作成され、販売され、購入者に配布され、購入者はそのコレクションを二次市場で保有または取引することを決定します。</p><p>NFTのローンチでは、初めて販売される商品と同様に、これまで価格が設定されていなかったものに価格を設定するという課題があります。しかし、他の多くの販売方法とは異なり、パブリック・ブロックチェーンという、経験の浅いユーザーにとっては特殊性に満ちた、非常に敵対的な環境で行われるという難題があります。そのため、開発者は、効率的かつ悪用されにくい仕組みを設計する必要があります。</p><p>この記事ではまず、経験的にユーザーを傷つけたローンチの実例を紹介し、良いローンチが満たすべきゴールを明らかにします。次に、ローンチのアイデアを個々のステップに分解し、それぞれのデザインスペースを探ります。最後に，コミュニティが使用し，構築できるような，優れたデザインの起動メカニズムの参考となる実装を提供します．</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">ユーザーに迷惑をかけた例</h2><p>これまでの経験から、NFTのローンチにおけるある種のデザインパターンが、一貫してユーザーにとって好ましくない結果をもたらすことがわかってきました。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">搾取される公平性</h3><p>新しいコレクションがローンチされると、ユーザーはそのスマートコントラクトと対話して、ランダムな属性セットを持つNFTをミントすることができます。これらの属性は、異なる希少性を持つ傾向があり、ある組み合わせは他の組み合わせよりも希少で価値があります。例えば、1万人のCryptoPunksのうち9人だけが超レアな「Alien」属性を持っており、最も安いものでも35,000ETHで販売されています。</p><p>さまざまな人がさまざまな理由でミントに参加していますが、多くの人は、どんなアイテムやレア度のものが手に入るかわからないというワクワク感を楽しんでいます。その意味では、NFTのミントは、アナログ（例：トレーディングカードゲームのブースターパック）やデジタル（例：ビデオゲームのルートボックス/クレート）経済で長い間親しまれてきた<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Gacha_game">ガチャの仕組み</a>を引き継いだものに過ぎません。</p><p>ガチャゲームに参加する人たちは、「アイテムのランダムな分布から抽選を行い、実際に（わずかではあるが）非常にレアなドロップを手に入れるチャンスがある」という重要な前提を置いている傾向がある。残念ながら、過去のNFTミントは、この前提を満たさず、真のランダム性を生み出すことができないことが多かった。実際には、高度な技術とモチベーションを持ったパーティがミントを悪用し、コレクションの中で最もレアなアイテムをスナイプして、誠実な参加者から奪うことが可能になっています。</p><p>このパターンでは、NFTのミントがまさにそのような方法で悪用された2つのケースを紹介します。どちらのケースも、同じ2段階のプロセスを採用しています。</p><p>エクスプローラーは、コレクションのメタデータを抽出して、すべての特徴の相対的な頻度を1つのレアリティスコアで表すことができます。このスコアを使って、コレクションの中で最も価値の高いNFTを決定します。 そして、搾取者は鋳造契約のランダム性を破り、欲しいレアで価値の高いNFTだけを鋳造する。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>Lootの派生モデルとオンチェーン・メタデータ・エクスプロイト</p><p>最近、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/dhof/status/1431316631934967815">「Loot」</a>と呼ばれるプロジェクトがNFT界に旋風を巻き起こしました。一見シンプルなこのプロジェクトでは、胸、足、手、頭、首、指輪、腰、武器など、さまざまなレアリティのアイテムが入った8000個の戦利品バッグが用意されていた。</p><p>各アイテムスロットのすべての属性が契約書に直接保存されているため、採掘者はバッグのIDをハッシュとして使用した疑似ランダムなバッグを受け取りました。イーサリアムが存在する限り、メタデータをチェーン上に保存することは永久的ですが、Lootの疑似ランダムな性質は悪用者にさらされます。彼らは、ランダム化関数をローカルにシミュレートすることで、8,000個すべてのバッグのメタデータを素早くスクレイピングし、コレクション全体の画像（および派生するレアリティ）を入手しました。これらの情報があれば、あとは契約の最後の弱点である、欲しいIDを正確にミントして、最もレアなバッグだけを盗むことができるという点を利用するだけです。</p><p>しかし、この方法は非常にシンプルであるにもかかわらず、オリジナルのLoot mintを悪用した者はいなかったと考えられます。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/9f625ab71853a06a77d3c8e98cbf006a0aaaea4206b264ee9a74a340f9391fd0.png" alt="出典: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/loot" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">出典: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/loot</figcaption></figure><p>ミントの最後までバッグのレア度を観察すると、レアアイテムはミントの期間中に十分に分散しています。これは、目立った搾取がなかったことを示しています。</p><p>戦利品が搾取されなかった理由として、2つの可能性が考えられます。</p><ol><li><p>全く新しい契約だったので、人々が悪用を発見する準備ができていなかったか、時間が足りなかった。</p></li><li><p>戦利品の価値が数日後にセカンダリ市場で爆発的に上昇したため、戦利品の鋳造にかかる費用が不明瞭だった。コレクションが完売するまでに2.5時間かかったことも、この仮説を裏付けています。</p></li></ol><p>しかし、Lootの価格が上昇するにつれ、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/dhof/status/1434180216444923923">「More Loot」</a>や<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/colingplatt/status/1433404301515370496?s=20">「Extension Loot」</a>といった様々な派生商品が登場し始めました。新しいコレクションはLootの脆弱性を受け継いでいますが、市場価値が高く、より多くの人の目に触れることになります。このことが、これらのミントの公正さ、あるいはその欠如に大きな違いをもたらしたのです。</p><h3 id="h-more-loot" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">More Loot</h3><p>More LootとOriginal Lootの鋳造時のレアアイテムの分布を比較すると、搾取の証拠が非常に明白になります。わずか数ブロックの間に、すべてのレアなNFTが鋳造されてしまい、将来の鋳造者にはわずかな残骸しか残らず、彼らは主に洗練されたユーザーがローンチを悪用したことに気づかないままでした。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/4db282b5ba4728e97fae5a022825d13608782a74be6d0a94505ce4cd079790df.png" alt="出典： https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">出典： https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot</figcaption></figure><p>下の写真 赤い線は、アニッシュが自分のレアリティスコアを<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/_anishagnihotri/status/1434220175268749320">ツイッターで公開し</a>、利用可能なレアバッグを獲得する競争が始まったことを示しています。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/78ef8e5a8663b1794ceb126552276e2aa40cbbf1444cc922e2260682278e289e.png" alt="出典: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">出典: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/mLoot</figcaption></figure><p>さらに、More Lootは供給量が増加しているため、悪用者は将来入手可能なバッグのスコアを事前に取得し、それを獲得するために競争すると考えるのが妥当でしょう。</p><h3 id="h-extension-loot" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">Extension Loot</h3><p>More Lootと同様に、「Extension Loot」では、1つのアドレスで最も希少な10個のバッグのうち5個が鋳造されます（赤でハイライトされたすべてのミント）。ユニークなのは、これらのミントがすぐにわかるように隠されていることです。搾取者は、レアなバッグを連続して狙う前に、時間と利用可能なバッグに応じてミントを分配します。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/be063887f9e099215c615cc9fb56963701628794b9323f15900b0438cd6fe3bf.png" alt="出典: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-f" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">出典: https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-f</figcaption></figure><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0"></h3><p>Meebitsとオフチェーン・メタデータ・エクスプロイト</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://meebits.larvalabs.com/">Meebits</a>は、CryptoPunksの制作者であるLarva Labsが開発した、2万種類のユニークな3Dキャラクターを収録した待望のNFTミントでした。</p><p>Larva Labs社は、経験豊富なユーザーがコレクションのメタデータを使ってレア度を計算し、レアなNFTを狙撃できることを知っていました。そこで、Larva Labs社は、購入者が各Meebitの完全なメタデータを見ることができるようにウェブサイトを設計しましたが、それは鋳造された後に限られます。</p><p>このサイトでは、鋳造されていないMeebitを明確に隠していましたが、ソースコードを調べたところ、LarvaLabs社がIPFSからメタデータを取得していることがわかりました。この情報をもとに、彼らはIPFSをスクレイピングして、とにかく未鋳造のMeebitsのメタデータを抽出し、最も望ましいものを特定しました。</p><p>しかし、Larvalabsは、Lootとは異なり、ユーザーが特定のMeebit IDを模倣することはできませんでした。Lootとは異なり、ユーザーは特定のMeebit IDを鋳造することができませんでした。代わりに、ハッシュとして使用されるチェーン上のランダム性（理論的にはまだ採掘者が利用可能）が、この特定のユーザーが希少なMeebitを鋳造することを難しくしていました。</p><p>しかし、悪用者は、悪い状況を最大限に利用する方法を知っていました。彼らは、Meebitを購入してそのIDを確認し、それを「リロール」する<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://etherscan.io/address/0x270ff2308a29099744230de56e7b41c8ced46ffb">契約を書きました</a>。具体的には、Meebitの契約書はERC721で、ランダムなMeebitのIDを返すmint()関数を備えていました。搾取者のコントラクトはmintを呼び出し、返されたMeebit IDをレアリティリストと照合し、一定のレアリティスコアを超えていなければ取引を元に戻します（<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://github.com/Anish-Agnihotri/blog-effective-nft-launches-data/tree/master/01-exploitable-fairness/meebits">サンプルコード</a>）。このトリックを使うことで、彼らは各Meebitをそのまま購入するための約2.5ETHの代わりに、各IDをチェックするために約0.03ETHしか支払っていません。</p><p>この攻撃者は、その過程で多くの失敗した取引とガス料金を消費しましたが、約400ETHの利益を得ました。今日では、同じ攻撃者がFlashbotsバンドルを介してトランザクションを送信し、希望するIDの1つを取得した場合にのみマイナーに支払うことができ、リバートは完全に無料になります。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/825f7eee4dfe4ec0708c558485b383cfd221b86fdce4ab19ba3e93433b087b1d.png" alt="この攻撃者は、超レアな「ビジター」特性を持つMeebit #16647を鋳造し、販売しました。" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">この攻撃者は、超レアな「ビジター」特性を持つMeebit #16647を鋳造し、販売しました。</figcaption></figure><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">ガスオークション</h3><p>9月、イーサリアムのガス1本あたりの基本料金が、7つの期間で1,250グワイを超えました。驚くべきことに、この7つの出来事はすべて、待望のNFTのローンチがネットワークを混乱させたためでした。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/904bceeb6fa7c39fb9cd942941a7afcb9a7019c910ced12d78323df59ea0e3d8.png" alt="左から右へ。G&apos;EVOLS、The Sevens、Sipher、Galaxy Eggs、Omnimorphs + ArtBlocks Democracity、Galactic Apes、King Frogs" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">左から右へ。G&apos;EVOLS、The Sevens、Sipher、Galaxy Eggs、Omnimorphs + ArtBlocks Democracity、Galactic Apes、King Frogs</figcaption></figure><p>これらのローンチの多くは、固定価格の先着順（FCFS）の仕組みを採用していました。低価格で過剰な需要があったため、そのようなNFTを獲得するための競争は、契約販売からmempool内のガスオークションへと移行した。</p><p>その一例が「<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://thesevensofficial.com/">The Sevens NFT drop</a>」で、ディストピアのキャラクターが描かれた7,000枚のプロフィール写真を集めた待望のコレクションでした。1NFTあたり0.07ETHの初値がついたため、熱心な参加者がコントラクトに殺到して鋳造を行いました。わずか6分でガス価格は12,246gweiとなり、参加者の中央値は1NFTあたり約1.49ETH、上位5%の人はガスだけで1NFTあたり2.44+ETHを支払ってコントラクトからミントを得ました。</p><p>セブンのミントの期間中、ブロック基本料金が急速にエスカレートする ガスオークションの問題点は、単に利用の難易度が高いというだけではなく、このように公共のメンプールを「悪用」することで、すべてのEthereumユーザーに負の外部性をもたらします。また、同じNFTに対して異なる金額を支払うことをユーザーに強いるため、不十分な入札による何千もの取引失敗が発生し、ユーザーを苦しめることになります。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">高いスキル</h3><p>これまで見てきたように、Ethereumは、高度で敵対的なアクターが常に目を光らせている<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://www.paradigm.xyz/2020/08/ethereum-is-a-dark-forest/">「暗い森」</a>です。NFTのミント、特に鋳造後に買い手が二次市場でプレミアムを得ることが期待できる希少なミントは、技術的に優れた関係者にとって、平均的な参加者を凌駕する有利な機会を提供します。</p><p>このような参加者は、ボットや自動化された戦略を通じて鋳造コントラクトと直接やりとりし、しばしばフロントエンドや時にはメンプールさえも回避します。</p><p>TIMEPiecesのNFTドロップでは、その典型的な例が見られました。高度なボットオペレーターは、鋳造プロセスの前に<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://nft.time.com/">nft.time.com</a>のフロントエンドのソースコードを<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/_anishagnihotri/status/1441072865764429825?s=20">検査</a>しました。これにより、彼らはメインネット上に展開されたミントコントラクトを見つけ出し、数時間前にボットを構築することができました。その結果、これらのボットは、3分以内に完全に売り切れたミントの際に大きなアドバンテージとなりました。一般の参加者がウォレットを接続して取引を行ったときには、すでに手遅れになっていました。</p><p>さらに、一部の参加者は<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://flashbots-explorer.marto.lol/?block=13282940">Flashbots</a>を使ってmempoolを回避し、直接マイナーとの取引を行っていました。TIMEPiecesの契約では、参加者は1アドレスあたり最大10NFTを鋳造することに制限されていましたが、ボットオペレーターの0x35...ce5は事前に計画を立て、5つのウォレットに資金を分割し、1つのFlashbotsバンドルで50NFTをスニッピングしました。20ETHのマイナーチップ（NFTあたりの平均ミントコストは0.5ETH）を支払った後でも、このボットオペレータは、NFTがセカンダリーマーケットに出回り始めたときに120ETH近い利益を得ることができました。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/e63418add01d95e64849f95daf154cc8db001cd9c00a3a56ccc54f47a24b3732.png" alt="このバンドルには、異なるアドレスからの5つのミント取引が含まれており、アドレスごとのミント取引制限を回避しています。" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="">このバンドルには、異なるアドレスからの5つのミント取引が含まれており、アドレスごとのミント取引制限を回避しています。</figcaption></figure><p>さらに、この参加者はFlashbots（失敗した取引をゼロコストで元に戻す機能）を使用していたため、前の例で説明した失敗した取引に悩まされることはありませんでした。これは、平均的なスキルを持つ10,962人近くの参加者が、100ブロック中12,743回の取り消しを行い、失敗した試みのために累積252.62ETH（約80万ドル）の取引手数料を失ったのとは異なります。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">ガスの非効率性</h3><p>効果的なNFTの鋳造メカニズムは、すべての参加者にとって使いやすく、手順が少なく、簡単に実装できることが理想です。FCFS分配モデルに代わる仕組みを導入したミントに共通する落とし穴は、ユーザーが行わなければならないチェーン上の取引の数を増やし、複雑さをもたらしてしまうことです。</p><p>その一例が、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://miso.sushi.com/">Miso</a>の<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://jaypegsautomart.com/">Jay Pegs Auto Mart</a> $DONAオークションです。造幣局は、バッチオークションによるNFT分配の先駆者であり、公正なメタデータ生成の実際を効果的に紹介したが、ガスや取引の効率を犠牲にしているのだ。</p><p>造幣局のプロセスに参加するためには、ユーザーは8日間で最低4回のチェーン上の取引を行う必要がありました。</p><ol><li><p>まず、ユーザーは、交換で何ドルのDONAトークンを受け取るかわからない状態で、ETHをMisoのバッチオークションに投入しました（最終的な清算価格によります）。</p></li><li><p>オークションが終了すると、ユーザーは$DONAトークンを要求しなければなりません。</p></li><li><p>この時点で、すべてのユーザーは、NFTを鋳造するには少なすぎるトークン、十分なトークン、または多すぎるトークンを持っていました。参加した1,363人の採掘者によると、少なすぎるトークンが273人、十分すぎるトークンが0人、多すぎるトークンが1,090人いました（端数が多い）。</p><ol><li><p>トークンの数が少なすぎるユーザーは、Sushiswapから必要な余剰分を得るために取引をしなければなりません。</p></li><li><p>トークンが多すぎるユーザーは、$DONAトークンの取引を承認し、Sushiswap経由で余剰分を売却する取引を行うことができました。</p></li></ol></li><li><p>NFTを作成するのに十分な量のDONAを持っているユーザーは、NFTの契約を承認してDONAを使用し、DONAを燃やしてNFTを作成することができました。</p></li><li><p>最後に、メタデータはNFTに一括して割り当てられ、自分のNFTを一方的に公開することはできないようになっている。</p></li></ol><p>この仕組みは、公平性を追求する一方で、ユーザーの参加を困難にし、ガス効率を悪くしていた。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">独占鋳造</h3><p>NFTのコレクターや愛好家がコレクションの価値を評価する方法の一つに、コミュニティの強さがある。一般的には、保有者間のトークンの集中度を測定します。理想的なコレクションは集中度が低く、多数のクジラよりも個人の参加者に有利な傾向がある。</p><p>しかし、最近のミントでは、参加者が一度の取引で複数のトークンを鋳造できるバッチミントを導入する傾向が見られます。この仕組みにより、ホエールミントは少ないガスオーバーヘッドで多くのNFTをミントするインセンティブを得ることができます。</p><p>実際の例としては、Stoner Catsのドロップがあります。これは、ミラ・クニスとその友人による短編アニメーションの制作を支援するためのコレクター向けNFTミントで、一度に最大20個のNFTをミントすることができます。この機能により、89%のNFTがバッチミント機能で鋳造され、Stoner Catsの31%近くが最大20個のNFTをまとめて鋳造されました。</p><figure float="none" data-type="figure" class="img-center" style="max-width: null;"><img src="https://storage.googleapis.com/papyrus_images/a55b39504328bc53b05bc50b9541376c712ff969d38d14ca45bb222a4c0ecc96.png" alt="" blurdataurl="data:image/gif;base64,R0lGODlhAQABAIAAAP///wAAACwAAAAAAQABAAACAkQBADs=" nextheight="600" nextwidth="800" class="image-node embed"><figcaption HTMLAttributes="[object Object]" class="hide-figcaption"></figcaption></figure><p>さらに、固定価格で販売されているすべてのNFTは、個人が清算価格以下で参加することを暗黙のうちに妨げている。これにより、分配の公平性が損なわれ、ウォレットの大きい人が有利になります。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">信頼できる運営者</h3><p>ガス戦争を防ぐために中央集権的なラッフルを導入する場合でも、公平性を高めるためにチェーンリンクを導入する場合でも、共通のトレードオフは第三者への信頼の前提を導入することです。NFTの造幣局がオフチェーンのインフラに依存すればするほど、ユーザーは中央集権的なオフチェーンのエンティティに対してより多くの信頼を寄せなければなりません。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">良いローンチの目標</h2><p>これらのローンチを見て、人々が実際に抱えていた問題を分析した結果、NFTローンチの望ましい特性として6つの項目を導き出すことができました。このリストは完全なものを目指しているわけではありませんが、これがスタートです。</p><p>**不可解なまでの公平性。**ローンチには真のランダム性が必要であり、略奪的なユーザーが、洗練されていないユーザーの犠牲の上に、最もレアなアイテムを盗むことができないようにする。</p><p>**レースコンディションの禁止。**NFT（あるいはその他の商品）が適正な市場価格を下回る価格で販売されると、Vitalik Buterin氏が「オークション・バイ・アナザー・ミーンズ」と呼んだ状態になります。実際には、買い手は自分の取引をできるだけ早く採掘してもらおうと競争したり、採掘者にインセンティブを与えるために多額の賄賂を渡したりします。オークション・バイ・アナザー・ミーンズは、ブロックチェーンに関する深い知識を持ち、ボットやFlashbots、Edenなどのプライベートリレー、あるいはマイナーへの直接アクセスなどのパワーツールにアクセスできる人に有利です。</p><p><strong>時間帯にとらわれない</strong>。一般的に、FCFSのローンチは特定のブロックハイトで発表され、短期間で完売してしまいます。どのようなブロックの高さを選んでも、他の時間帯のユーザーが寝ていたり、仕事をしていたりすると不利になってしまいます。そのため、普段の生活を変えずに参加できるように、発売時間はあまり短くしないようにしています。</p><p>**ガス効率。**チェーン（特にEthereum）上での取引にはコストがかかるため、優れたローンチでは、ユーザーが行うべき取引の数を最小限に抑えるよう努めるべきです。</p><p>**包括性と耐シビル性。**多くの場合、NFTの創設者にとっては、最初に市場が多少下がることになっても、ローンチを多様な保有者に開放することが最善の利益となります。それは、活気あるコミュニティこそが、最終的に二次市場でのコレクションの価値を高めるからです。</p><p>信頼性の高さ もちろん、そうは言っても、ローンチメカニズムは、基盤となるブロックチェーンの特性を維持するように機能しなければなりません。つまり、カストディアンになったり、運営者に過剰な信頼の前提を求めたりすることなく、前述のメリットを享受できなければならないのです。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">曖昧さは悪いデザインの言い訳にはならない</h3><p>ほとんどのローンチは、理論的には前述の問題の1つまたはいくつかを抱えていますが、実際にはこれらの問題が現れるほどの十分な需要がありません。これは &quot;Security by Obscurity &quot;の一例です。</p><p>例えば、新しいコレクションの知覚される市場価値が低い場合、mempoolでの入札合戦につながる競争条件がなく、優先ブロックスペースを購入する必要もなく、略奪的なユーザーがそれを利用するインセンティブもないかもしれません。同様に、新しいコレクションの需要が多すぎると、そのコレクションがあっという間に売り切れてしまい、そのコレクションのためにカスタムソフトウェアを書いたり、その公平性を利用したりする時間がなくなってしまうかもしれません。</p><p>需要が少なすぎても多すぎても困ることはありませんが、私たちは、あらゆる市場環境に対応できるようにローンチを設計すべきであり、特に、コレクションを悪用から守る手段として、コレクションがすぐに売り切れることに頼るべきではないと考えています。</p><h2 id="h-nft" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">NFTのローンチのアンバンドリング</h2><p>良いローンチに求められるものはわかったものの、そこに至るまでの道のりはまだわかっていません。その道筋（あるいは、これから説明するように、さまざまな道筋）は、ボンネットの中で実際に起こっていることをアンバンドリングすることで、少しずつ明らかにしていくことができます。</p><p>NFTのローンチは、基本的に4つのステップで構成されています。</p><ol><li><p>**入札。**販売が開始され、ユーザーは入札をオペレーター（スマートコントラクトでも可）に提出します。</p></li><li><p>**クリアリング。**運営者は、集まった入札を残りの供給量と照合し、クリアリング価格を決定し、落札者を選定します。</p></li><li><p>**配布。**落札者は、新たに獲得したNFTを請求することができる（または運営者から受け取ることができる）。</p></li><li><p>**メタデータの公開。**オペレーターがNFTの特性を明らかにする。</p></li></ol><p>例えば、Lootを見てみましょう。Lootは、FCFSセールにおいてブロック13,108,877で販売されました。コレクションの作成者である<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/dhof">ドム</a>は、スマートコントラクトで販売価格をゼロに設定していましたが、ユーザーはガスで入札する必要がありました。ブロックごとにマイナーが新しい入札を残りの供給量と照合し、落札者と落札者を決定しました。入札が成立すると、ユーザーは同じ取引でアイテムを受け取ることができた。</p><p>ほとんどのユーザーは、アイテムを受け取った後に、そのアイテムの属性を知ることができた。しかし実際には、洗練されたユーザーであれば、ミントの前にスマートコントラクトからアイテムの属性を読み取ることができ、それによってコレクションの中で最も希少なアイテムを狙撃することができました。このことから、他のステップが逐次的に起こるか、連続的に起こるかにかかわらず、メタデータは、アイテムが購入されて結論的に決済された後にのみ明らかにされなければならないことがわかります。</p><p>次に、4つのステップのそれぞれにおいて、NFT開発者が持つ選択肢を探ります。それぞれの選択肢が望ましい特性に与える影響を議論し、設計上の良い選択と悪い選択を選別します。</p><h3 id="h-1" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">フェーズ1：入札</h3><p>この段階では、事業者はユーザーから入札（購入要求）を集めます。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">連続クリアリングと逐次クリアリング</h3><p>まず、入札とクリアリングを同じフェーズで連続して行うか、重複しない2つのフェーズで行うかを決めなければなりません。</p><p>FCFS（固定価格販売）は、連続クリアリングの一例である（これまでのNFTのほとんどがそうである）。ブロックごとにマイナーが入札を見て、残りの供給量に対してクリアする。この仕組みにはいくつかの問題がある。運営者がNFTの清算価格を過大評価した場合、商品が高すぎて売り切れない可能性がある。運営者がNFTの清算価格を過小評価すると、アイテムが安すぎるため、ユーザーはスピード（誰が最もブロックスペースに直接アクセスできるか）やガス価格（誰が最も採掘者に取引代金を支払えるか）で競い合うことになります。議論されているように、これは失敗した取引による大規模なデッドロスにつながり、より熟練した参加者が大きく有利になります。どうしても必要であれば、前者については、すべてのユーザートランザクションを<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://docs.flashbots.net/flashbots-protect/rpc/quick-start/">Flashbots RPC</a>にルーティングし、失敗したトランザクションにコストがかからない環境でオークションを行わせることで軽減することができます。</p><p>2つ目の方法をとる場合、入札と清算は重ならない2つのフェーズで行われます。実際には、運営者がまずすべての入札を集め、それを利用可能な供給量と照合し、公正な価格で市場をクリアします。このアプローチには、バッチ式オークションやラッフルなどのメカニズムが含まれます。<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://jaypegsautomart.com/">Jay Pegs Auto Mart</a>の例では、ユーザーに1週間の入札期間を与えてから市場をクリアしています。</p><p>逐次的なアプローチには、我々が掲げる目標に沿ったいくつかの利点があります。</p><ol><li><p>**競争状態にならない。**ユーザーには入札のための時間が十分にあり、結果はユーザーの速さやスキルではなく、ユーザーがいくら支払うかで決まる。</p></li><li><p>**タイムゾーンにとらわれない：**他のタイムゾーンで働いている人や住んでいる人にも配慮したアプローチです。 また、ガスオークションを行わないため、他のネットワーク利用者への負の外部性がありません。</p></li></ol><p>しかし、このアプローチには、（オークションのデザインにもよりますが）より多くのオンチェーン取引を必要としたり、より長く待たなければならなくなった参加者の楽しみが減るなどのマイナス面もあります。後者の懸念を軽減するために、入札期間をあまり長くしないことをお勧めします（48時間以内）。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">オンチェーン入札とオフチェーン入札</h3><p>連続クリアリングか逐次クリアリングかを決めた後の次の選択は、ユーザーが入札をオンチェーンで行うかオフチェーンで行うかです。</p><p>後述するように、今日のローンチでは、オンチェーンで入札を集めるのが最も簡単であるため、事実上、マイナーに落札された入札をクリアさせ、それ以外の入札は失敗させています。ネットワーク自体が検閲されていないと仮定すると、有効な入札が売却から漏れることはないという強力な保証もあります。</p><p>しかし、チェーン外で入札を集めることも同様に可能である。このプロセスでは、ユーザーは、自分のオンチェーン・アドレス、購入したいトークンやチケットの数、上限価格などの情報を含むメッセージに、自分の秘密鍵で署名します。ユーザーは、このメッセージをオンチェーンで実行することなく、自分の署名を使ってその有効性を証明するために運営者に送信します。</p><p>オペレーターは、これらの入札を利用して、オフチェーンで市場を清算するか、落札された入札を束ねてコントラクトに提出し、オンチェーンで実行させることができます。いずれの方法でも、オペレータが正しい入札を実行するためには、ある程度の信頼性が必要です。</p><p>この最後の方法は、オフチェーンでの入札収集とオンチェーンでの落札者選定を組み合わせたもので、強固でガス効率が良く、柔軟性のある方法です。ユーザーが信頼しなければならないのは、オペレータがオンチェーンで入札を行う際に入札を省略していないことだけであり、これは比較的弱い仮定であると言えます。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">誰が入札できるか</h3><p>3つ目の決定事項は、誰がどれくらい入札できるかということです。包括性とシビル耐性の目標で述べたように、プロジェクトは多様なユーザーがアイテムを購入できるようにしたいと考えるかもしれない。そのためには、特定の特徴を持つユーザーが購入できるようにアイテム数を制限したり、既存のNFTコミュニティの保有者専用にアイテムを確保したりすることが考えられます。</p><p>入札がオフチェーンで行われる場合、このようなKYCルールは簡単に実装できます。ユーザーが署名をサーバーに提出する前に、一定の情報を証明するように求めるだけです。オンチェーンでのKYCはより複雑ですが、Gitcoinのプライバシー保護を目的としたProof of Personhoodのような取り組みが進んでいます。</p><p>プロジェクトがKYCを必要としない場合でも、大規模なユーザーも小規模なユーザーも、1ドルで同じ量のトークンを購入できるような対策をとることができます。この原則は、契約によってユーザーが同じ取引で多くのNFTを購入または請求できるようになっている場合に、しばしば破られます。なぜならば、クジラはガス料金をより多くのトークンで償却することができるため、小規模なユーザーよりもトークンあたりの支払いが少なくなるからです。これを緩和するためには、1アドレスまたは1トランザクションあたりのトークン数に上限を設けるのが良いでしょう。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">入札コスト</h3><p>さらに運営者は、ユーザーがいつトークンの代金を支払わなければならないのかを決めなければなりません。それは、入札時に一緒に支払うのか、それとも市場が清算された後に支払うのかです。</p><p>後者の場合、ユーザーは入札の段階でトークンを予約し、市場がクリアになった後、一定の時間内に購入を完了することができます。この方法とオフチェーン入札を併用したプロジェクトが「<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://parallel.life/">Parallel</a>」です。このモデルは、静かな市場ではうまく機能していましたが、需要が非常に高くなると、ユーザーがコストをかけずにできるだけ多くのトークンを予約しようとする競争状態になってしまいます。</p><p>競走状態の問題を軽減するためには、入札自体にコストを関連付ける必要があります。ここでの最善の解決策は、ユーザーが同じアドレスからスマートコントラクトで資金をロックした後にのみ入札を行うようにすることです。運営者は、入札が失敗した場合に資金を返却するか（取引所の指値注文に似ている）、入札を維持するか（ペイアウトされなかった抽選券に似ている）を決定することができます。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">入札の粒度</h3><p>最後に、ユーザーにどの程度の粒度で入札を表明してもらうかを決めなければならない。需要が供給を上回るために）負けの入札がある場合、勝者と敗者の意味をさらに決めなければなりません。ここでは3つの有効な選択肢を紹介します。</p><p><strong>&quot;Dumb&quot; batched auction:</strong> 人々は、それ以上の指示なしにETHの量をコミットします。クリアリングフェーズでは、アイテムの数をコミットした全体のETHで割り、全員がERC-20の形で端数のトークンを受け取り、後でERC-721 NFTに交換することができます。Jay Pegs Auto Martではこの方法を採用しており、負け札が出ないというメリットがあります。しかし、チェーン上で3つの余分な取引が必要になるというデメリットがあります。2つの取引は、有用な量（例えば、1つの「完全な」ERC-20）に達するためのトークンの売り買いであり、1つはNFTとの交換です。最も重要なことは、この方法では、買い手が一定量のトークンを求める価格を表明することができないことです。</p><p><strong>「スマート・バッチ・オークション」</strong>: 類似した、しかし間違いなくより良いアプローチは、数年前にSpankChainがICOで使用したものです。Jay Pegとは異なり、SpankChainはトークンの数量とトークンあたりの価格を指定して入札を集めました。入札フェーズの後、彼らはオフチェーンでストライクプライスを計算し、それを落札価格とともにスマートコントラクトに提出し、人々は落札した場合はSPANKを、落札しなかった場合はETHを引き出すことができました。この方法の欠点は、すべての入札をマッチングさせるための計算量が非常に大きく、オフチェーンでしか行えないため、運営者をある程度信頼する必要があることです。</p><p>**ラッフル。**最後に、ユーザーがチケットや予約を購入して入札を行うラッフルやロッタリーを実行することができます。当選者は、すべてのチケットのプールから無作為に選ばれます。この方法では、ユーザーは完全なトークンを受け取るか、あるいは何も受け取らないかのどちらかで、Jay Pegの$DONAが必要とした3つの余分なトランザクションを省くことができます。また、フルのNFTを1つ買うことができないような小規模なウォレットにも対応しています。しかし、この方法では販売にランダム性が生じるため、好むユーザーと好まないユーザーがいます。</p><h3 id="h-2" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">フェーズ2：クリアリング</h3><p>この段階では、運営者（または運営者を代行する者）が、入札を利用可能な供給量と照合し、アイテムを購入できる人とできない人を決定します。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">オン・チェーンとオフ・チェーンのクリアリング</h3><p>最後の大きな分岐点は、すべての入札のプールから勝者を選ぶのは誰かということです。FCFSモデルでは、これはマイナーが行いますが、これにはいくつかの問題があることを示しました。</p><p>Jay Pegのクリアリングメカニズムでは、完全に信頼できる方法でオンチェーンで行うのに十分な計算量になっています。</p><p>SpankChainのモデルでは、勝者は完全にオフチェーンで選ばれます。入札者は希望する価格以上にフィルされることはないが（スマートコントラクトがこれを保証する）、分散型取引所に対するサンドイッチ攻撃の仕組みと同様に、最大のフィル価格まで押し込まないように運営者を信頼しなければならないのだ。</p><p>ラッフルアプローチは、必要なのは1つの乱数（例えば、Chainlink VRFから）だけなので、最も簡単にクリアできます。しかし、乱数を必要とすることで、別の信頼の前提が導入されます。乱数を生成する人は、他の人よりも自分の入札を優先する可能性があります。一方、落札価格が単に最も高いものである場合には、このようなことは起こりえない。</p><h3 id="h-3" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">フェーズ3：分配</h3><p>マーケットがクリアされた後、オペレーターはトークンを鋳造してユーザーに渡し、もしユーザーがそのモデルを選んだのであれば、負けた入札額を返却しなければなりません。この段階では、ガスの効率化と競争状態の防止が重要となります。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">即時決済と間隔を空けた決済</h3><p>オペレーターが、ユーザーが一斉に請求してガス料金が高騰するのを防ぎたい場合は、決済プロセスと同じランダム性を再利用して、ユーザーが一括して請求できるようにすることができます。この場合、ユーザーは一斉に請求しない方が良いので、集団行動の問題が解決されます。しかし、自分のメタデータを知りたい、セカンダリーマーケットでいち早く売りたいという好奇心は、いずれにしても競争状態を生み出すかもしれません。とはいえ、間隔を空けて決済すると、ユーザーの待ち時間も長くなります。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">トークンの主張と受け取り</h3><p>配布の際に他に言及すべきことは、ユーザーが自分でトークンを請求しなければならないのか、それとも運営者が時間をかけてトークンを送るだけでよいのかということです。後者は、間隔を空けて決済する方法のバリエーションですが、ユーザーが何もしなくていいというメリットがあります。先に紹介したパラレルローンチでは、この方法をうまく利用し、ユーザーが最初にNFTの代金を支払う際に「配送料」を追加するだけで済むようにした。</p><h3 id="h-4" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">フェーズ4：メタデータの公開</h3><p>最後に、トークンが配布されると、そのメタデータが公開されます。このステップは、NFT導入の4つのフェーズのうち、最後に行わなければなりません。また、最後のステップを共有することもできません（例えば、Meebitが行ったように、支払い、配布、公開を同じトランザクションにまとめて行うなど）。再ロールを不可能にするためには、支払いと公開の間に少なくとも1ブロックのギャップがなければなりませんが、再ロールから守るためにこのギャップを増やすこともできます。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">メタデータを公開するタイミング</h3><p>NFTの鋳造とメタデータの公開は同じトランザクション内では行われないことがわかりました。これは公平性だけでなく、ユーザーエクスペリエンスやガス効率の観点からも重要です。一般的には、3つの選択肢があります。</p><p>**フルコレクションの公開。**フルコレクション公開では、オペレーターは、コレクションのすべてのNFTがミントされるまで待ってからメタデータを公開します。この方法はガス効率が高く、必要なのは乱数1つだけで、あとはユーザーが何もしなくてもチケットIDのメタデータをシャッフルすることができます。</p><p>しかし、この方法には大きな欠点があります。すなわち、ユーザーは自分のトークンのメタデータを見るために、すべてのNFTが鋳造されるまで待たなければならない。メタデータを公開する時間に上限を設けると（例えば24時間）、一部のユーザーが鋳造に間に合わず、結果的にコレクションが完売しない可能性があります。</p><p><strong>NFTごとの公開</strong>。フルコレクション公開のUXを向上させるために、運営者はユーザーがNFT単位でランダムに公開できるようにすることもできます。これは、ユーザーがアイテムを購入後すぐに「開封」できるため、より魅力的です。また、「未開封」のアイテムを二次市場で取引することも可能になります（MTGなどのトレーディングカードゲームでは人気があります）。</p><p>しかし、この方法では、Chainlink VRFへの電話やNFTへの乱数の適用など、ユーザーがチェーン上で追加の取引をしなければならないという負担があります。これは、公開の必要性を特に感じていないユーザーや、未開封のアイテムを取引することに興味がないユーザーにとっても避けられないことです。</p><p>**一括公開。**中間的な方法として、私たちは「バッチ式公開」というコンセプトを提案します。この方法では、ユーザーは無期限にアイテムを公開することができますが、公開したい場合は次のブロックで公開することもできます。新しい乱数が要求されるたびに、自動的にすべてのミントされたアイテムと割り当て保留中のアイテムのメタデータが公開され、実質的に同じ一定のコストで公開されます。</p><p>その結果、時間優先度の高いユーザーは、メタデータを公開するための余分なオンチェーン・トランザクションにお金を払うという選択肢を持つことができ、それが彼ら以前のすべてのユーザーに利益をもたらすことになります。ユーザーがメタデータの公開を選択しなかった場合、オペレータは、例えば毎正時などのスケジュールに従ってメタデータの公開を行うことができます。</p><h3 id="h-" class="text-2xl font-header !mt-6 !mb-4 first:!mt-0 first:!mb-0">ランダム性の原因</h3><p>いつ公開するかを決めた後に残る問題は、どこでランダム性を得るかということです。ここでは、Chainlink VRFを使用する方法と、<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://en.wikipedia.org/wiki/Commitment_scheme">commit-reveal方式</a>を使用する方法の2つを提案します。</p><p>Chainlink VRFを使用すると、検証可能なランダム性のソースにオンチェーンでオンデマンドでアクセスできます。任意の公開メカニズムを使用して、Chainlinkを呼び出してランダム性を要求し、それが満たされると、ランダムに生成された数字をメタデータの計算の入力として使用することができます。これにより、各NFTに対して確実にランダム化されます。</p><p>後者の場合、オペレーターは販売前に1つの乱数（フル公開の場合）または複数の乱数（NFT毎またはバッチ公開の場合）を作成し、そのハッシュを事前にコミットすることができます。NFTが鋳造されると、事業者はこれらの数字を公開し、誰もがハッシュによってその真偽を確認することができます。しかし、この方法では、オペレータが乱数に対する特権的な洞察力を利用して最高のNFTを鋳造しないようにするために、オペレータをある程度信頼する必要があります。信頼の必要性を最小限にするために、我々は、鋳造順序の独立した乱数化を行うことを推奨します。</p><p>さらに、オフチェーン・メタデータについては、乱数をコミットする代わりに、オペレータは完全なメタデータ（すべてのNFTのid-attribute）のハッシュをコミットすることができます。これにより、メタデータは事前に決められたものであり、ミント処理の最中や後に変更されることはありません。ただし，オペレータが順序や属性に関する知識を悪用することを防ぐために，ミントの順序には独立したランダム化が必要です。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">参考実装</h2><p>すべての特性のバランスが取れており、理解しやすく、調整しやすいと思われる参考実装を用意しました。</p><p>**入札。**我々の実装では、ユーザーはくじのチケットを購入することで入札することができます。くじ引きの期間は運営者が決定します（24〜48時間を推奨します）。チケット1枚あたりの価格は、ガス代と、運営者が指定したNFTあたりの価格で構成されています。後者は「保証金」の役割を果たし、市場を清算した後、すべての負けたチケットに返金されます。Sybilの耐性は、1取引あたりのガス、ロックされた資金の資本コスト、1アドレスあたりの最大チケット数の3つの方法で作られます。</p><p>**クリアリング。**入札期間が終了すると、利用可能なNFTの数に等しい数の勝者が、すべてのチケットのプールから抽選されなければならない。まず，誰でも<code>collectEntropy()</code>を呼び出して，Chainlink VRFから乱数を得ることができる．この乱数は，Fisher-Yatesシャッフルを実装した「shuffleEntries()」で使用される．誰でもこの関数を呼び出すことができるので，有効性が保証され，ガスコストが社会的に利用できるようになります（例えば，クジラが利用できます）。</p><p>**配布。**すべての当選者が抽選された後、ユーザーは、当選したチケットからNFTを請求し、落選したチケットから払い戻しを受けるための無期限の期間を持つ。どちらも同じトランザクション内で行われます。オペレーターは、当選チケットからの収益の引き出しを開始することができます。</p><p>**メタデータの公開。**ユーザーは、NFTを請求してから1ブロック後に、そのNFTのメタデータを公開することができます。誰でも新しい乱数を要求することができ、それによって自動的に鋳造され、割り当てが保留されているすべてのアイテムのメタデータが公開されます。これにより、時間的な優先順位が高いユーザーは、お金を払ってすぐに明らかにすることができますが、すべてのユーザーに利益をもたらします。</p><h2 id="h-" class="text-3xl font-header !mt-8 !mb-4 first:!mt-0 first:!mb-0">おわりに</h2><p>本記事では、実例を挙げて、NFTのローンチの設計が不十分だと、ユーザーにとって最適ではない結果になることを紹介しました。しかし、自分の目標を明確に定義し、ローンチが実際にどのようなステップを踏むのかを時間をかけて分解すると、多くのデザインが可能になります。そして、ほとんどすべてのデザインが、私たちが今日慣れ親しんでいる、固定価格、先着順、ネットワーク混雑型の販売よりも優れています。</p><p>この記事から何かを得るとしたら、この3つのルールを挙げることができるでしょう。</p><p>**搾取できないほどの公正さは、ランダムなメタデータを用いたNFTの最も重要な特性である。**堅牢なランダムを使用し、購入して決済する前にNFTのメタデータを明らかにしてはならない。 **レース状態は、ミントに参加する人もしない人も含めて、ユーザーを傷つけます。**この問題を解決するために、逐次的な入札とクリアリング（例：ラッフルやバッチオークション）を使用する。 **最初から費用対効果を考える。**現在、オンチェーンで行われている手順をオフチェーンでも行うことで、ユーザーのコストを削減できないかを考えてみましょう。オフチェーンのステップには、入札だけでなく、ユーザーがオペレーターにある程度の信頼を置けることを前提とした市場清算も含まれます。公開段階では、バッチ処理を検討してください。 私たちは、NFTの開発者がこれらのアイデアを実験的に取り入れ、よりバラエティに富んだサービスを提供することを期待しています。最後に、NFTコミュニティでアドバイスを共有し、ローンチの質の向上に貢献している方々を紹介したいと思います。</p><p><a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://vitalik.ca/general/2021/08/22/prices.html">Vitalik</a>-FCFS固定価格販売の問題点を解説していただきました。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://fairdrop.0xessential.com/">FairDrop</a>：公正なくじの概念実証のデザインを共有していただきました。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/dotta/status/1420372022790483979">dotta</a>-堅牢なフロントエンドの構築についてアドバイスをいただきました。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/josephdelong/status/1437426536043454464?s=20">Jay Pegs Auto Mart</a> and <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/ameensol/status/1437474410659651586?s=20">SpankChain</a>-新しいオークションのアプローチをデモしていただきました。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/Jeremystormsky/status/1421915852727885825?s=20">Parallel</a>-オフチェーンラッフルのベストプラクティスを紹介してください。 <a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/0xmons/status/1409640045829447686?s=20">0xmons</a>-フェアローンチの設計に関するアドバイスとツールの提供</p><p>他にも良いスレッドやコンセプト、発表を見逃していませんか？Twitterで<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/hasufl">@hasufl</a>と<a target="_blank" rel="noopener noreferrer nofollow ugc" class="dont-break-out" href="https://twitter.com/_anishagnihotri">@_anishagnihotri</a>にご連絡いただければ、一緒にこのリソースを強化していきましょう。</p><p>感謝の意を表します。Robert Miller (Flashbots), Dom Hofmann</p><p>執筆者</p><p>Hasu</p><p>アニッシュ・アグニホトリ</p><p>Anish Agnihotriは、Paradigmのリサーチアソシエイトです。以前はPolychain Capitalのリサーチチームに所属し、アーリーステージの投資をサポートしていました。学士号[→]を取得中。</p><p>免責事項：本記事は一般的な情報提供のみを目的としています。本記事は、投資アドバイスや投資の売買の推奨・勧誘を目的としたものではなく、投資判断を行う際のメリットの評価に利用すべきではありません。また、会計、法律、税務に関するアドバイスや投資の推奨を目的として依拠することはできません。この投稿は、執筆者の現在の意見を反映したものであり、Paradigmやその関連会社を代表して作成されたものではなく、必ずしもParadigmやその関連会社、Paradigmに関連する個人の意見を反映したものではありません。ここに反映されている意見は、更新されることなく変更されることがあります。</p>]]></content:encoded>
            <author>0xabaki@newsletter.paragraph.com (0xAbaki)</author>
            <enclosure url="https://storage.googleapis.com/papyrus_images/2cf620a936930dd95cab057288f5da77fed270c00d792f4d6120880d391ac960.png" length="0" type="image/png"/>
        </item>
    </channel>
</rss>