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:
@@ -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);
|
||||
Reference in New Issue
Block a user