Competition Rules
1. Tattoo Compatibility
- The output must be clearly recognizable at a 25x25 mm size.
- Lines should be thick enough for tattooing and should not be overly detailed to prevent blurring over time.
- The use of colors should be limited; grayscale is allowed but should not compromise clarity.
- The entire 100x100 unit canvas must be used; no margins are required.
2. Determinism & Uniqueness
- The same input (
seed
) must always produce the exact same output—the algorithm must be fully deterministic.
- Each input (
seed
) must produce a unique and distinguishable result.
- Every bit of the input must be used in generating the algorithm's output.
3. Visual Consistency & Recognizability
- All outputs from a single algorithm must be visually related—completely different styles for different parts of the seed space are not allowed.
- The algorithm's output must remain distinguishable even when rotated or mirrored.
4. Technical Requirements
- The algorithm must be efficient and render the output in ~300 ms or less, the faster the better.
- It must be fully standalone—no external assets, system- or platform-specific fonts, external resources, or APIs.
- If fonts are needed, they must be generated within the algorithm itself.
5. Creativity & Remixing
- Remixing other algorithms is allowed, as long as the remix has significant changes that make it distinct from the original.
- AI assistance is allowed in creating the algorithm.
6. Submission Guidelines
- Submissions to the competition should be created and submitted using the Entropretty App, hosted at https://app.entropretty.com.
- Participants must submit a link to their published work in the Entropretty app to the competition system of the event host for judgment.
Competition Judging Criteria
Judging on February 22, 2025. Jury-led evaluation by Proof-of-Ink and Assembly representatives + tattoo artist.
Judging Criteria:
- Aesthetic Quality – Is the design visually appealing?
- Tattoo-Friendliness – Is it clear, high-contrast, and tattoo-compatible?
- Algorithmic Uniqueness – Does it generate a diverse set of outputs?
Seed Details
We are looking for algorithms in 3 categories, each being uniquely defined by the seed set to your algorithm. The possible types of seeds are the following:
1. Entropy
- The seed is an arbitrary 4 byte/32-bit quantity.
- e.g.
[64, 255, 0, 8]
- Seed Samples - Entropy-Seeds.txt
2. Personal ID
- The seed to your algorithm will be an integer number expressed in Little Endian as 8-bytes.
- e.g.
[45, 0, 0, 0, 0, 0, 0, 0]
(integer 69)
- The integer represented by the seed is:
- Min value:
0
- Max value:
10_000_000_000
- Heavily biased towards lower values
- Seeds Samples - Personal_Id-Seeds.txt
3. Account ID
- The seed is an arbitrary 32-byte/256-bit quantity.
- e.g.
[72, 178, 250, 161, 99, 11, 142, 176, 152, 101, 140, 230, 14, 190, 144, 148, 47, 155, 251, 45, 180, 193, 157, 5, 231, 6, 0, 233, 6, 35, 32, 81]
- Seeds Samples - Account_Id-Seeds.txt
Helpers
There are several functions provided for operating on seeds:
bit(seed, n)
Get the nth bit from the seed, indexed from 0. Returns either 0 or 1.
bits(seed, from, to)
Get a number built from the bits of seed of the given span from and to.
bits(seed)
Get a number built from all bits of the seed, somewhere between 0 and 2**32 - 1 inclusive.
split(seed, parts)
Return an array of numbers, parts in length, each using approximately the same number of bits from the seed.
randomGenerator(seed)
Return a function which itself takes no arguments and returns a stream of random numbers between 0 and 1. This uses the Prando algorithm. There is also cheapRandomGenerator
(using SFC32) and secureRandomGenerator
(using SHA-256).
numeric(seed)
Returns a bigint representing the seed. Useful for transforming a Procedural Personal seed into a single integer number representation aka the Personal Id/Citizen Id.
Can be extended if found useful
Licensing
Participants agree that their submitted code will be licensed under CC BY-NC-SA 4.0 and thereby will be potentially used in the Proof-of-Ink project to generate tattoo designs for individuals. Usage is up to be determined by the Polkadot Open Governance platform.
https://creativecommons.org/licenses/by-nc-sa/4.0/