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.
You must be logged in to post a comment.