What is a simple proof-of-consent within the context of crypto-law and the networked-society?

in legalese •  7 years ago  (edited)

Update: Now on Ethereum, wordbot.eth

Video recorded messages ought to be quite universally applicable proof-of-consent, if they include a cryptographic timestamp both within the message, verbally recording and gesturing the current block hash which cannot be known ahead of time, and then a timestamp soon afterwards when uploaded that shows that the video message existed at a certain point in time.

There could also be a dApp for gestural time stamps, that generates (on-state) a sequence of words and corresponding gestures that can be used to record a timestamp in video messages, and the sequence that is unique at any given block height is generated in a way that it cannot be known in advance, making it a "human-readable" equivalent of block hashes.

Vitalik Buterin's "proof-of-life" and the case for "human readable" blockhashes

Vitalik Buterin used the latest blockhash last year to provide a public record of "proof-of-life" that disproved the rumour that he had died in a car crash, a meme that was propagated by some person somewhere.

The next iteration of that could be "human-readable blockhahes", a sequence of word that is unique for any given block height, and that are deterministically generated so that they cannot be known in advance. These human-readable blockhashes can be used to include a legal timestamp in a public record, using video messages for example.

A smart contract for "human readable blockhashes"

This contract speaker.sol stores a list of 1024 words, and returns a sequence of words that can be used to include a legal timestamp in a public record. The code below only shows 7 out of 1024 words.

pragma solidity ^0.4.24;

contract speaker {

bytes public wordlist;

function getWords(uint _wordcount) public view returns (bytes6[]) {
    bytes32 entropy;  
    bytes6[] memory ret = new bytes6[](_wordcount);

    for(uint i = 0; i < _wordcount; i++) {
        uint index = random(entropy) * 6;
        bytes memory word = new bytes(6);
    
        word[0] = wordlist[index];
        word[1] = wordlist[index + 1];
        word[2] = wordlist[index + 2];
        word[3] = wordlist[index + 3];
        word[4] = wordlist[index + 4];
        word[5] = wordlist[index + 5];
    
        bytes6 toBytes6;

        assembly {
            toBytes6 := mload(add(word, 32))
        }

        ret[i] = toBytes6;

        entropy = keccak256(word);
    }
    return ret;
}

function random(bytes32 _entropy) internal view returns (uint16) {
    return uint16(uint256(keccak256(
        abi.encodePacked(
            block.timestamp, block.difficulty, _entropy
            )
        )
    )%1024);
}

constructor() {

  bytes memory toBytes = new bytes(6*1024);

  assembly {

  mstore(add(toBytes, 32), "about")
  mstore(add(toBytes, 38), "above")
  mstore(add(toBytes, 44), "abroad")
  mstore(add(toBytes, 50), "accept")
  mstore(add(toBytes, 56), "access")
  mstore(add(toBytes, 62), "acorn")
  mstore(add(toBytes, 68), "acre")

Synapses

https://www.coindesk.com/proof-life-vitalik-buterin-uses-ethereum-blockchain-disprove-death-hoax/

Authors get paid when people like you upvote their post.
If you enjoyed what you read here, create your account today and start earning FREE STEEM!