public void TestDelegate()
        {
            var delegatedBody = new Body
            {
                ChainTag     = 74,
                BlockRef     = "0x005d64da8e7321bd",
                Expiration   = 18,
                GasPriceCoef = 0,
                Gas          = 21000,
                DependsOn    = "",
                Nonce        = "0xd6846cde87878603",
                Reserved     = new Reserved {
                    Features = 1
                }
            };

            delegatedBody.Clauses.Add(new Clause("0xa4aDAfAef9Ec07BC4Dc6De146934C7119341eE25", new BigInteger(100000), "0x2398479812734981"));
            delegatedBody.Clauses.Add(new Clause("0xa4aDAfAef9Ec07BC4Dc6De146934C7119341eE25", new BigInteger(100000), "0x2398479812734981"));
            delegatedBody.Clauses.Add(new Clause("0xa4aDAfAef9Ec07BC4Dc6De146934C7119341eE25", new BigInteger(100000), "0x2398479812734981"));

            var transaction = new Transaction.Transaction(delegatedBody);

            Assert.True(transaction.IsDelegated);

            var senderPrikey = "0xdce1443bd2ef0c2631adc1c67e5c93f13dc23a41c18b536effbbdcbcdb96fb65";
            var senderAddr   = "0x7567d83b7b8d80addcb281a71d54fc7b3364ffed";

            var gasPayerPrikey = "0x321d6443bc6177273b5abf54210fe806d451d6b7973bccc2384ef78bbcd0bf51";
            var geaPayerAddr   = "0xd3ae78222beadb038203be21ed5ce7c9b1bff602";

            Assert.True(transaction.SigningHash().SequenceEqual("0xb07661afea87bf07d3a76742950b1607174090bc2241a32e40f8d35e3747e0ad".ToBytes()));

            var senderSigningHash   = transaction.SigningHash();
            var gasPayerSigningHash = transaction.SigningHash(senderAddr);

            var senderSignature   = Cry.Secp256k1.Sign(senderSigningHash, senderPrikey.ToBytes());
            var gasPayerSignature = Cry.Secp256k1.Sign(gasPayerSigningHash, gasPayerPrikey.ToBytes());

            transaction.AddVIP191Signature(senderSignature, gasPayerSignature);

            Assert.True(transaction.Id == "0xf6a2eab557187af50e4a3abb8a65894eb3be4d58a557b31e8f878ca91c0d9f4e");
            Assert.True(transaction.Origin == senderAddr);
            Assert.True(transaction.Delegator == geaPayerAddr);
        }