示例#1
0
    public TransactionInput CreateSetTopScoreTransactionInput(string addressFrom, string addressOwner, string privateKey, BigInteger score, HexBigInteger gas = null, HexBigInteger valueAmount = null)
    {
        var numberBytes = new IntTypeEncoder().Encode(score);
        var sha3        = new Nethereum.Util.Sha3Keccack();
        var hash        = sha3.CalculateHashFromHex(addressFrom, addressOwner, numberBytes.ToHex());
        var signer      = new MessageSigner();
        var signature   = signer.Sign(hash.HexToByteArray(), privateKey);
        var ethEcdsa    = MessageSigner.ExtractEcdsaSignature(signature);

        var function = GetFunctionSetTopScore();

        return(function.CreateTransactionInput(addressFrom, gas, valueAmount, score, ethEcdsa.V, ethEcdsa.R, ethEcdsa.S));
    }
    public TransactionInput closeRoomInput(string addressFrom, string privateKey, HexBigInteger gas, int id, HexBigInteger valueAmount = null)
    {
        var numberBytes = new IntTypeEncoder().Encode(id);
        var sha3        = new Nethereum.Util.Sha3Keccack();
        var hash        = sha3.CalculateHashFromHex(addressFrom, numberBytes.ToHex());
        var signer      = new MessageSigner();
        var signature   = signer.Sign(hash.HexToByteArray(), privateKey);
        var ethEcdsa    = MessageSigner.ExtractEcdsaSignature(signature);

        object[] array = new object[] { id };
        var
            function = closeRoomFunction();

        return(function.CreateTransactionInput(addressFrom, gas, valueAmount, array));
    }
    public TransactionInput createUserInput(string addressFrom, string privateKey, HexBigInteger gas, string name, int pin)
    {
        var stringBytes = new StringTypeEncoder().Encode(name);
        var numberBytes = new IntTypeEncoder().Encode(pin);
        var sha3        = new Nethereum.Util.Sha3Keccack();
        var hash        = sha3.CalculateHashFromHex(addressFrom, numberBytes.ToHex(), stringBytes.ToHex());
        var signer      = new MessageSigner();
        var signature   = signer.Sign(hash.HexToByteArray(), privateKey);
        var ethEcdsa    = MessageSigner.ExtractEcdsaSignature(signature);

        object[] array = new object[] { name, pin };
        var
            function = createUserFunction();

        return(function.CreateTransactionInput(addressFrom, array));
    }
        public static string Sha3ForCooperative(CooperativeSignDto cooperativeDto)
        {
            var sha3 = new Sha3Keccack();

            var bob =
                new IntTypeEncoder()
                .Encode(StringToBigInteger(cooperativeDto.BobAmountWei));
            var alice =
                new IntTypeEncoder()
                .Encode(StringToBigInteger(cooperativeDto.AliceAmountWei));

            var output     = sha3.CalculateHashFromHex(bob.ToHex(), alice.ToHex(), cooperativeDto.ChannelId);
            var resultHash = "0x" + output;


            return(resultHash);
        }
        public void ShouldSignHash()
        {
            var address1    = "0x6A849e2036A36EB4Cd37b9aFA3c770064899f1A2";
            var address2    = "0x12890D2cce102216644c59daE5baed380d84830c";
            var numberBytes = new IntTypeEncoder().Encode(1); //Number is a big integer so we need 32 bytes if it was int32 it will be 4 bytes. Using the abi encoder it takes care of padding

            var sha3   = new Util.Sha3Keccack();
            var output = sha3.CalculateHashFromHex(address1, address2, numberBytes.ToHex());

            Assert.Equal("0xc11d3d2b8e0c5b8b645b9e7502751352ecaf8c3fdf3a0124dae9c1556fb2ce37", output.EnsureHexPrefix());

            var signer    = new MessageSigner();
            var signature = signer.Sign(output.HexToByteArray(), "0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7");
            var ethEcdsa  = MessageSigner.ExtractEcdsaSignature(signature);
            var adddress  = signer.EcRecover(output.HexToByteArray(), signature);

            Assert.Equal(adddress, new EthECKey("0xb5b1870957d373ef0eeffecc6e4812c0fd08f554b37b233526acc331bf1544f7".HexToByteArray(), true).GetPublicAddress());
        }
        public static string Sha3ForReceipts(ReceiptDto receiptDto)
        {
            var sha3 = new Sha3Keccack();

            var rec =
                new IntTypeEncoder()
                .Encode(receiptDto.ReceiptId);
            var epo =
                new IntTypeEncoder()
                .Encode(receiptDto.EpochId);
            var amo =
                new IntTypeEncoder()
                .Encode(StringToBigInteger(receiptDto.AmountWei));
            var output     = sha3.CalculateHashFromHex(rec.ToHex(), epo.ToHex(), amo.ToHex(), receiptDto.Address);
            var resultHash = "0x" + output;


            return(resultHash);
        }
        public static string Sha3ForAudit(AuditSignDto auditDto)
        {
            var sha3 = new Sha3Keccack();

            var bob =
                new IntTypeEncoder()
                .Encode(StringToBigInteger(auditDto.BobAmountWei));
            var alice =
                new IntTypeEncoder()
                .Encode(StringToBigInteger(auditDto.AliceAmountWei));
            var epoch =
                new IntTypeEncoder()
                .Encode(auditDto.EpochId);
            var output     = sha3.CalculateHashFromHex(bob.ToHex(), alice.ToHex(), auditDto.ChannelId, epoch.ToHex());
            var resultHash = "0x" + output;


            return(resultHash);
        }