Baseline: Ausgangszustand vor Modularisierung

Erster Commit des bestehenden monolithischen WinForms-Copytraders,
inklusive der Alt-Backups (*.bak), damit diese dauerhaft in der
Historie rekonstruierbar bleiben. Threema-Lib unter libs/ wurde
vendored (nested .git entfernt).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
bergm
2026-07-01 13:16:16 +02:00
co-authored by Claude Opus 4.8
commit 475d396f80
147 changed files with 25455 additions and 0 deletions
+105
View File
@@ -0,0 +1,105 @@
// File: hash_test.csx
#r "nuget: Nethereum.Signer, 4.22.0"
#r "nuget: Nethereum.ABI, 4.22.0"
#r "nuget: Nethereum.Hex, 4.22.0"
using System;
using System.Numerics;
using Nethereum.Signer.EIP712;
using Nethereum.Signer;
using Nethereum.ABI.FunctionEncoding.Attributes;
[Struct("EIP712Domain")]
public class CtfDomain
{
[Parameter("string", "name", 1)]
public string Name { get; set; }
[Parameter("string", "version", 2)]
public string Version { get; set; }
[Parameter("uint256", "chainId", 3)]
public ulong ChainId { get; set; }
[Parameter("address", "verifyingContract", 4)]
public string VerifyingContract { get; set; }
}
[Struct("Order")]
public class CtfOrder
{
[Parameter("uint256", "salt", 1)]
public BigInteger Salt { get; set; }
[Parameter("address", "maker", 2)]
public string Maker { get; set; }
[Parameter("address", "signer", 3)]
public string Signer { get; set; }
[Parameter("address", "taker", 4)]
public string Taker { get; set; }
[Parameter("uint256", "tokenId", 5)]
public BigInteger TokenId { get; set; }
[Parameter("uint256", "makerAmount", 6)]
public BigInteger MakerAmount { get; set; }
[Parameter("uint256", "takerAmount", 7)]
public BigInteger TakerAmount { get; set; }
[Parameter("uint256", "expiration", 8)]
public BigInteger Expiration { get; set; }
[Parameter("uint256", "nonce", 9)]
public BigInteger Nonce { get; set; }
[Parameter("uint256", "feeRateBps", 10)]
public BigInteger FeeRateBps { get; set; }
[Parameter("uint8", "side", 11)]
public byte Side { get; set; }
[Parameter("uint8", "signatureType", 12)]
public byte SignatureType { get; set; }
}
var typedData = new TypedData<CtfDomain>
{
Domain = new CtfDomain
{
Name = "Polymarket CTF Exchange",
Version = "1",
ChainId = 137,
VerifyingContract = "0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E"
},
Types = Nethereum.ABI.EIP712.MemberDescriptionFactory.GetTypesMemberDescription(typeof(CtfDomain), typeof(CtfOrder)),
PrimaryType = "Order"
};
var ctfOrder = new CtfOrder
{
Salt = 17747015785747,
Maker = "0x628914cf1e96a9d1ab8f0489a9f64be5633bac41",
Signer = "0x883fe952a23bb68aab8832343d4bedde759b40ea",
Taker = "0x0000000000000000000000000000000000000000",
TokenId = BigInteger.Parse("54119275359569982132308633107899675342776540894581625713762792947175003762644"),
MakerAmount = 999180,
TakerAmount = 3660000,
Expiration = 0,
Nonce = 0,
FeeRateBps = 0,
Side = 0,
SignatureType = 0
};
string privKey = new string('1', 64);
var eip712TypedDataSigner = new Eip712TypedDataSigner();
var key = new EthECKey(privKey);
var hash = eip712TypedDataSigner.HashTypedDataV4(ctfOrder, typedData);
var sig = eip712TypedDataSigner.SignTypedDataV4(ctfOrder, typedData, key);
Console.WriteLine("CS_STRUCT_HASH|" + Nethereum.Hex.HexConvertors.Extensions.HexByteConvertorExtensions.ToHex(hash, true));
Console.WriteLine("CS_SIG|" + sig);