Um mir einen Eindruck von Terracore für die HiQ zu bekommen, habe ich vor ein paar Wochen auch mit Terracore angefangen. Ich habe immer nur so nebenbei bei Terracore reingeguckt. Dabei habe ich mir aber einiges an SCRAP entgehen lassen, da ich ständig ausgeraubt wurde.
Natürlich habe ich von einigen Leuten mitbekommen, dass sie Autoclaim Skripte haben. Als ich dann erneut von jemanden hörte, dass er das auch macht, dachte ich mir dann endlich: "Ok, das brauch ich auch."
Ein Blick in die Doku verrät, dass es sogar einen Public API Endpoint gibt. Dieser ermöglicht Upgraden, Claimen und Angreifen. Für Claimen sieht das Ganze so aus:
To get an idea of Terracore for the HiQ, I also started playing Terracore a few weeks ago. I've only ever looked at Terracore in passing. But I missed out lot of SCRAP because I was constantly being robbed.
Of course, I heard from some people that they have autoclaim scripts. When I heard again from someone that he was doing it too, I finally thought to myself: "Ok, I need that too".
A look at the doc reveals that there is even a Public API Endpoint. This enables upgrading, claiming and attacking. For claiming, the whole thing looks like this:
async function claim(player, amount) {
var hash = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
const json = {
"amount": amount,
"tx-hash": hash
};
//convert json to string
const data = JSON.stringify(json);
hive.broadcast.customJson(process.env.ACTIVE_KEY, [player.username], [], 'terracore_claim', data, function(err, result) {
});
}
Mein nächster Gedanke war, dass ich das ja in Python mit Beem nachbauen könnte. Was ein bissle merkwürdig an der Claim Funktion aus der Doku erscheint, sind die Keys "amount" und "tx-hash" der customJson. Mir war nicht ganz klar woher ich weiß wie viel ich claimen kann und warum ich irgendwas hashen sollte.
My next thought was that I could recreate this in Python with Beem. What seems a bit strange about the claim function from the doc are the keys "amount" and "tx-hash" of the customJson. It was not clear to me how I know how much I can claim and why I should hash anything.
var hash = Math.random().toString(36).substring(2, 15) + Math.random().toString(36).substring(2, 15);
Allerdings erzeugt diese Zeile offenbar nur einen random "hash". Da ich mir jüngst CodeGPT für Visual Studio Code installiert hatte und dies aber eigentlich nicht nutzte, fragte ich einfach mal ChatGPT via CodeGPT nach einer einfachen Hash Funktion. Und folgendes kam dabei raus:
However, this line apparently only creates a random "hash". Since I had recently installed CodeGPT for Visual Studio Code and didn't actually use it, I simply asked ChatGPT via CodeGPT for a simple hash function. And this is what came out:
def simple_hash(input_str):
# Convert the input string to bytes
input_bytes = input_str.encode()
# Use the hash() function to generate a hash value
hash_value = hash(input_bytes)
return hash_value
Dann habe ich bei Beem noch fix nachgeguckt wie ich eine customJson in die Chain hämmere und fertig...
Naja, ich wusste immernoch nicht was der Key "amount" soll. Aber ich dachte mir ich teste einfach mal:
Then I looked up how to smash a customJson into the chain with Beem and that was it...
Well, I still didn't know what the amount was supposed to do. But I thought I would just test it:
while True:
time.sleep(60*60*4)
hive = Hive(nobroadcast=False, keys=key)
input=str(random.randint(1,100))
print(hive.custom_json(id='terracore_claim', required_auths=['quekery'],
json_data={
"amount": '0.5',
"tx-hash": simple_hash(input)}))
Mein erster Versuch hat auch gleich funktioniert. Offenbar ist der Wert von "amount" egal, da immer alles, was verfügbar ist, geclaimt wird. Auch scheint der "hash" relativ egal zu sein. Das war jetzt ein quick and dirty Claim Skript in Python. Vielleicht mache ich demnächst auch noch ein Battle Skript.
My first attempt also worked straight away. Apparently the value of "amount" doesn't matter, because everything that is available is always claimed. The "hash" also seems to be relatively unimportant. Maybe I'll do another script for battling soon.