コード例 #1
0
ファイル: ContractUtils.cs プロジェクト: vip-user/Nethereum
        public static string CalculateCreate2Address(string address, string saltHex, string byteCodeHex)
        {
            if (string.IsNullOrEmpty(address))
            {
                throw new System.ArgumentException($"'{nameof(address)}' cannot be null or empty.", nameof(address));
            }

            if (string.IsNullOrEmpty(saltHex))
            {
                throw new System.ArgumentException($"'{nameof(saltHex)}' cannot be null or empty.", nameof(saltHex));
            }

            if(saltHex.EnsureHexPrefix().Length != 66)
            {
                throw new System.ArgumentException($"'{nameof(saltHex)}' needs to be 32 bytes", nameof(saltHex));
            }

            var sha3 = new Sha3Keccack();
            return sha3.CalculateHashFromHex("0xff", address, saltHex, sha3.CalculateHashFromHex(byteCodeHex)).Substring(24).ConvertToEthereumChecksumAddress();
        }
コード例 #2
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));
    }
コード例 #3
0
    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));
    }
コード例 #4
0
    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));
    }
コード例 #5
0
        public static string CalculateTransactionHash(string rawSignedTransaction)
        {
            var sha3 = new Sha3Keccack();

            return(sha3.CalculateHashFromHex(rawSignedTransaction));
        }