Here is a contract that allows anyone to define what art is. It contains a single set of twelve statements about art. They are encoded as hexadecimal values which are interpreted as sentences in a simple subset of International Art English and displayed by the UI.
{ ;; Constant values ;; Price base (wei), doubled for each definition up to DEFS-COUNT (def 'PRICE-BASE 10) ;; Add to the index to get the price base exponent (def 'PRICE-FACTOR-ADD 10) ;; Number of definitions (def 'DEFS-COUNT 12) ;; Range of values for definitions (def 'DEF-MIN 0x1) (def 'DEF-MAX 0x0F0F0F0F) ;; Storage locations (def 'artist 0x10) (def 'defs-base 0x100) (def 'theorists-base 0x200) ;; State ;; Contract owner/payee [[artist]] (caller) (return 0x0 (lll { [action] (calldataload 0) (when (= @action "set") { [index] (calldataload 32) [definition] (calldataload 64) [price] (exp PRICE-BASE (+ @index 1 PRICE-FACTOR-ADD)) ;; If the index is in range and the caller paid enough to set it (when (&& (>= @definition DEF-MIN) (<= @definition DEF-MAX) (< @index DEFS-COUNT) (= (callvalue) @price)) { ;; Update definition [[(+ defs-base @index)]] @definition [[(+ theorists-base @index)]] (caller) (- (gas) 100) @@artist @price 0 0 0 0 }) }) } 0x0)) }
The contract is in lll rather than Serpent this time.
Here’s what the UI looks like.
And here’s what it looks like when a statement is being edited.
The contract allows the statements to be edited but it costs progressively more to do so: the first costs 10 Wei, the third costs 1000 and so on. This ensures that art theorists place a value on their definition, thereby indicating how confident in and/or serious about their definition they are. The higher the value, the less likely it is to be changed by someone else. This combines art theory with behavioral economics.