Bitcoin Forum
June 06, 2026, 03:40:44 PM *
News: Latest Bitcoin Core release: 31.0 [Torrent]
 
   Home   Help Search Login Register More  
Pages: [1]
  Print  
Author Topic: Miasona Seeding Event  (Read 19 times)
rubyatmidnight (OP)
Newbie
*
Offline

Activity: 2
Merit: 0


View Profile
June 05, 2026, 06:14:38 PM
 #1

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hello,

I will soon be generating unique avatars for users of our game, these are not NFTs, (every generation is unique, there are no rarity tiers) but I am using a future blockhash as the primary seeding source and I need a public seeding event for it to feel meaningful.

given there is no better place, I am doing it here. As I post this, we're at block height 952507.

The structure of this is `seed = "<SHA256¹⁰⁰(blockhash)>:<blockhash>:<kick_id>" and the result of that will be used to procedurally generate the cat avatar.

I will establish that the block hash at block height 952520 will be our chosen block. That will be in around two hours from now.

Code:
def derive_features(kick_user_id: int, username: str) -> CatsonaFeatures:
    stream = _ByteStream(f"{GENESIS_PREFIX}:{GENESIS_BLOCKHASH}:{kick_user_id}")

    fur_h = _hue(stream.next(), stream.next())
    fur_s = round(_span(stream.next(), *FUR_SAT))
    fur_l = round(_span(stream.next(), *FUR_LIGHT))
    fur_hsl = (round(fur_h), fur_s, fur_l)

    pattern = _pick(stream.next(), PATTERN)

    eye_h = _hue(stream.next(), stream.next())
    eye_s = round(_span(stream.next(), *EYE_SAT))
    eye_l = round(_span(stream.next(), *EYE_LIGHT))
    eye_hsl = (round(eye_h), eye_s, eye_l)
    eye_hsl_right = eye_hsl
    heterochromia = (stream.next() / 256.0) < HETERO_CHANCE
    if heterochromia:
        gap = HETERO_MIN_HUE_GAP + (stream.next() / 255.0) * (360 - 2 * HETERO_MIN_HUE_GAP)
        h2 = (eye_h + gap) % 360
        s2 = round(_span(stream.next(), *EYE_SAT))
        l2 = round(_span(stream.next(), *EYE_LIGHT))
        eye_hsl_right = (round(h2), s2, l2)

    nose_hsl = (340, 50, 78) if fur_l >= 50 else (350, 18, 45)
    ear_hsl = (340, 45, 80) if fur_l >= 45 else (340, 22, 55)

    return CatsonaFeatures(
        kick_user_id=kick_user_id,
        name=f"{username}Cat",
        fur_name=_hue_name(fur_h),
        fur_hsl=fur_hsl,
        pattern=pattern[0],
        eye_name="heterochromia" if heterochromia else _hue_name(eye_h),
        eye_hsl=eye_hsl,
        eye_hsl_right=eye_hsl_right,
        nose_hsl=nose_hsl,
        ear_hsl=ear_hsl,
        heterochromia=heterochromia,
    )
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMPFwAKCRBbtmxCWk+4
BsDsAQDgmwdYNfK2gBAy7E7s/HTT5034N54eWHsIiwa4B09VoAD/T4wKRREkXTD0
aOb1mIF3FK24fpGnJbwys1l27hdrcAE=
=zXQp
-----END PGP SIGNATURE-----

To verify my signature, my public key is on my website, which anyone who knows what this is for should be able to find. If you don't know, then don't worry about it.
Actually, I added a sentence after the fact on accident. Had to fix that unfortunately.

I'm pretty sure pgp hates bbcode, so I'm going to just establish it with a cleaner signed message:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

given there is no better place, I am doing it here. As I post this, we're at block height 952507.

The structure of this is `seed = "<SHA256¹⁰⁰(blockhash)>:<blockhash>:<kick_id>" and the result of that will be used to procedurally generate the cat avatar.

I will establish that the block hash at block height 952520 will be our chosen block. That will be in around two hours from now.
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMSsAAKCRBbtmxCWk+4
BthgAQDPYkIUDg3V69AleMBCKiUUmQqBYvq1/ELs0SMSXsJMEQD9HJvJDNdrs12b
jTW58yfmQWJKmRwLhdelhrZGmQx6TAA=
=Z5pF
-----END PGP SIGNATURE-----


Thanks! I'll make one more post once the block height is reached.
rubyatmidnight (OP)
Newbie
*
Offline

Activity: 2
Merit: 0


View Profile
June 05, 2026, 08:14:21 PM
 #2

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Hello,

I will soon be generating unique avatars for users of our game, these are not NFTs, (every generation is unique, there are no rarity tiers) but I am using a future blockhash as the primary seeding source and I need a public seeding event for it to feel meaningful.

given there is no better place, I am doing it here. As I post this, we're at block height 952507.

The structure of this is `seed = "<SHA256¹⁰⁰(blockhash)>:<blockhash>:<kick_id>" and the result of that will be used to procedurally generate the cat avatar.

I will establish that the block hash at block height 952520 will be our chosen block. That will be in around two hours from now.

Code:
def derive_features(kick_user_id: int, username: str) -> CatsonaFeatures:
    stream = _ByteStream(f"{GENESIS_PREFIX}:{GENESIS_BLOCKHASH}:{kick_user_id}")

    fur_h = _hue(stream.next(), stream.next())
    fur_s = round(_span(stream.next(), *FUR_SAT))
    fur_l = round(_span(stream.next(), *FUR_LIGHT))
    fur_hsl = (round(fur_h), fur_s, fur_l)

    pattern = _pick(stream.next(), PATTERN)

    eye_h = _hue(stream.next(), stream.next())
    eye_s = round(_span(stream.next(), *EYE_SAT))
    eye_l = round(_span(stream.next(), *EYE_LIGHT))
    eye_hsl = (round(eye_h), eye_s, eye_l)
    eye_hsl_right = eye_hsl
    heterochromia = (stream.next() / 256.0) < HETERO_CHANCE
    if heterochromia:
        gap = HETERO_MIN_HUE_GAP + (stream.next() / 255.0) * (360 - 2 * HETERO_MIN_HUE_GAP)
        h2 = (eye_h + gap) % 360
        s2 = round(_span(stream.next(), *EYE_SAT))
        l2 = round(_span(stream.next(), *EYE_LIGHT))
        eye_hsl_right = (round(h2), s2, l2)

    nose_hsl = (340, 50, 78) if fur_l >= 50 else (350, 18, 45)
    ear_hsl = (340, 45, 80) if fur_l >= 45 else (340, 22, 55)

    return CatsonaFeatures(
        kick_user_id=kick_user_id,
        name=f"{username}Cat",
        fur_name=_hue_name(fur_h),
        fur_hsl=fur_hsl,
        pattern=pattern[0],
        eye_name="heterochromia" if heterochromia else _hue_name(eye_h),
        eye_hsl=eye_hsl,
        eye_hsl_right=eye_hsl_right,
        nose_hsl=nose_hsl,
        ear_hsl=ear_hsl,
        heterochromia=heterochromia,
    )
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMPFwAKCRBbtmxCWk+4
BsDsAQDgmwdYNfK2gBAy7E7s/HTT5034N54eWHsIiwa4B09VoAD/T4wKRREkXTD0
aOb1mIF3FK24fpGnJbwys1l27hdrcAE=
=zXQp
-----END PGP SIGNATURE-----

To verify my signature, my public key is on my website, which anyone who knows what this is for should be able to find. If you don't know, then don't worry about it.
Actually, I added a sentence after the fact on accident. Had to fix that unfortunately.

I'm pretty sure pgp hates bbcode, so I'm going to just establish it with a cleaner signed message:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

given there is no better place, I am doing it here. As I post this, we're at block height 952507.

The structure of this is `seed = "<SHA256¹⁰⁰(blockhash)>:<blockhash>:<kick_id>" and the result of that will be used to procedurally generate the cat avatar.

I will establish that the block hash at block height 952520 will be our chosen block. That will be in around two hours from now.
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMSsAAKCRBbtmxCWk+4
BthgAQDPYkIUDg3V69AleMBCKiUUmQqBYvq1/ELs0SMSXsJMEQD9HJvJDNdrs12b
jTW58yfmQWJKmRwLhdelhrZGmQx6TAA=
=Z5pF
-----END PGP SIGNATURE-----


Thanks! I'll make one more post once the block height is reached.


BTC Block height 952520:

Hash:
Code:
00000000000000000000e3d9b254ca41ce02e9e292d9ca69ffeb1c4ffc118f17

Code:
def sha256_100_times(text: str) -> str:
    data = text.encode("utf-8")

    for _ in range(100):
        data = hashlib.sha256(data).digest()

    return data.hex()

Input:
Code:
00000000000000000000e3d9b254ca41ce02e9e292d9ca69ffeb1c4ffc118f17
SHA256x100:
Code:
11e993fa8ccfa888e027eafb7f503a636ad240dde70e15a110751fe277c7925e

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Block height 952520:
At 20:11:34 UTC, I committed this hash as our seed:

00000000000000000000e3d9b254ca41ce02e9e292d9ca69ffeb1c4ffc118f17
-----BEGIN PGP SIGNATURE-----

iHUEARYKAB0WIQSmEh+/E6P3sj7XxmxbtmxCWk+4BgUCaiMtpQAKCRBbtmxCWk+4
BrsBAP9Au8NawI0TJeHEmGko0C+NBdWHmgBBCv0/KNCpUrvS8QD+JfOCQDu0D+tY
BPXlPYdw5+9B2e4Q/c4hbSjdTWkZvg8=
=4cc5
-----END PGP SIGNATURE-----
Pages: [1]
  Print  
 
Jump to:  

Powered by MySQL Powered by PHP Powered by SMF 1.1.19 | SMF © 2006-2009, Simple Machines Valid XHTML 1.0! Valid CSS!