status-im / swarms

Swarm Home. New, completed and in-progress features for Status
92 stars 31 forks source link

Decentralart #66

Closed andytudhope closed 6 years ago

andytudhope commented 6 years ago

Preamble

Idea: PROC066
Title: Decentralart
Status: Draft
Created: 2017-12-28
Requires: #4 (well, we require the ability scan QRs from a DApp, which is part of that idea).

Summary

Build two pieces that integrate Status into the #ArtProject started by Truebit and Jessica Angel.

Swarm Participants

Product Overview

Truebit is working on a Dogethereum bridge, which will form the heart of the #ArtProject. This work will be about bridging many different things: Dogecoin and Ethereum; ethereal transactions and real world interactions; networked relationships and the people behind them. As Anne-Marie Willis suggests, we create our spaces and, in turn, they create us back. We are organism-environments that are in a constant dialogue, both with ourselves and with the world(s) around us.

Given the emphasis on the idea of unified networks, I think Status can play a big role in this #ArtProject in the 2 ways outlined below.

Product Description

This product will have 2 distinct parts:

  1. Jessica is looking for mini art installations that will live within the structure itself. I think we should put 12 QR codes throughout the physical space that people have to actually walk around/explore/interact with the piece to find. When they find them, they can be scanned with Status. This initiates a simple call() to a smart contract; which is neat because it doesn’t require any gas, so anyone who has just got Status installed doesn’t need to worry about funding their wallet before being able to interact with the piece. Each call will return a string, which can be one of 12 words. Based on these 12 words, we can have 2 different prizes.

1a. Thanks to input from Will King and others, we are extending this part of the DApp to also include the ability to win NFTs with unique and beautiful digital art work made by Jessica Angel et al. You will be able to find digital pieces within the physical structure! :mind_blown: More info can be found here.

  1. The project is all about unified networks, about building and activating bridges. One of the core and most cherished principles at Status is that everything we build is decentralized and that we use only protocols that are native to Ethereum; protocols which are part of the web3 stack so that we can realise the possibilities implied by all the decentralized things. We, too, act as a bridge between privacy and personal connection; between self-sovereignty and sustainable communities; between humans and a new class of technology. This means that we have a great opportunity to add to the actual presentation of a unified network. I would love to see a web of light intertwined with the transactional Dogethereum bridge that shows off whisper messages being sent with Status. This means that the artwork will present not only transactional data, but also chat messages happening by means of the same technology. This is the power of Ethereum, right? A general purpose blockchain; the decentralized backbone on which we can construct a different way of transacting and interacting with the digital world. A different way of being in the future. It’s not only about people sending cryptocurrencies back and forth and interacting with smart contracts, but also about them chatting directly with each other and discovering a new world from their pockets, all in a way that does not require any intermediaries and which cannot be tracked or traced easily.

Requirements & Dependancies

We require some work on the API (most likely by @janherich and @jeluard and maybe @alwx) in order to make sure that we can access the camera through at least a DApp. Would likely be nice to have a designer's input on any welcome screens/educational content we might want to include in the DApp part of this idea. As it is, I plan to work off some of the designs here.

In case you're thinking that it'll be too easy to decode the smart contract: not only are the words not in order, not only is the account still password protected, but we will deploy from a random account and use different key words so that no-one can easily search bytecode. Even if someone does find the contract, we have approximately 3 hours before they can brute force it.

Minimum Viable Product

Goal Date: 2017-12-28

Description: A very light PoC can be found here. Open Status and, using Console, @browse to https://andytudhope.github.io/StatusSeekers. I have deployed the contract on Ropsten and hitting the button will return you, randomly, one of the 12 words required to reconstruct the reward account.

Dates

Iteration 1

Goal Date: 2018-01-21

Description:

  1. Implement QR code scanning in the DApp.
  2. Make a nice welcome screen/splash page.
  3. Implement ability to store 12 words and move them around easily on the DApp page.
  4. Write bot that accepts 12 word strings, checks them and returns either Sorry, that is incorrect or the required password.
  5. Implement ability to submit 12 word string directly from DApp to bot for intuitive experience.

Testing Days required: ~1 day

Iteration 2

Goal Date: 2018-02-20

Description: Have any call to the bot fire off an event that can be used to control lights/some other physical hardware that can be incorporated into the artwork itself.

Iteration 3

Goal Date: tbd

Description: I'm not sure how feasible the 2nd half of this proposal is, in terms of our ability to translate whisper messages into a physical structure given the totally decentralized nature of the beast. I can't imagine how it might work without some element of centralization, which is never going to (and should never) happen. Perhaps we can watch messages over a few of our own mailservers/masternodes, but I am not sure about this. Require feedback from @oskarth et al before putting a date to this and discussing it's viability. The #ArtProject is only scheduled for mid-2018 though, so we have some time and this might be more sensibly discussed after releasing Beta and when we have fewer moving parts.

Success Metrics

  1. 500 people download Status to interact with the art work.
  2. 1000 people into Riot before and during the exhibition.

(More non-tangible):

Supporting Role Communication

Jonny will handle the marketing side of this, in tandem with Hutch and I from the community perspective.

Copyright

Copyright and related rights waived via CC0.

jeluard commented 6 years ago

I love this idea! I'd like to commit some hours per week.

alwx commented 6 years ago

Amazing idea. If there are still slots left for developers, I would like to join and spend ~20h/w working on it.

andytudhope commented 6 years ago

@alwx awesome stuff! There is definitely still room left for devs. Currently 2 big things to be worked on.

1) Perhaps you could help @janherich with https://github.com/status-im/status-react/issues/2855 and https://github.com/status-im/status-react/issues/2854. These 2 issues are critical and it would be best, imho, if you started with them?

2) I want to have a really nice splash screen that is 100vh and, when you tap it, it disappears. Something similar to https://github.com/status-im/ideas/issues/24#issuecomment-345684419, but with some helpful tips to using this particular DApp. Was experimenting with a very naive module on the splash branch: https://github.com/andytudhope/StatusSeekers/tree/splash but am not happy with it at all.

andytudhope commented 6 years ago

Update on the current state of this swarm:

  1. We have implemented a safer key words contract that sue hashes and nonces and is reusable here.

  2. We have added the idea of levels into our NonFungibleCollectable contract so that each time someone scans a QR code, the contract will check which level they are trying to claim and either revert or issue them a new token at the correct level. Each level is intended to be a dimension (this, after discussions with Jessica). As you move through the physical structure, interacting, exploring and scanning QRs, you can build your own, unique, virtual cryptocreature in 12 dimensions. Very excited by this idea, you can see all our unit tests running well (with Ganache, that is - some weirdness in truffle develop handles reverts/exceptions wrongly).

Next steps

We have found someone else to help with some creative direction and tools on how we can procedurally generate images client side on a phone to correspond to each levelToken and render a creature/image in more and more dimensions that nevertheless remains unique (based on 40 bits input initially, then 18 bits for each of 12 levels).

We need to write a light server that can handle some of the signing required for verification etc when claiming these tokens. We need to think and test a little more around gas usage here as well. Obviously, the key words are just call()s and so are free, but the NFT stuff is not and there are a bunch of different ways we could potentially handle it for the smoothest user experience possible.

Oh, we also really need @jeluard to fix the damn Media API so we can actually scan QR codes 😉

oskarth commented 6 years ago

Closing this issue as part of spring cleaning. If this idea is still relevant, please submit a PR per https://github.com/status-im/ideas/#contributing. If you feel closing this issue is a mistake, feel free to re-open.