示例#1
0
 public bool Equals(RawTransaction other) => Nonce == other.Nonce &&
 Signer.SequenceEqual(other.Signer) &&
 PublicKey.SequenceEqual(other.PublicKey) &&
 GenesisHash.SequenceEqual(other.GenesisHash) &&
 UpdatedAddresses.SequenceEqual(
     other.UpdatedAddresses) &&
 Timestamp == other.Timestamp &&
 Signature.SequenceEqual(other.Signature) &&
 Actions.SequenceEqual(other.Actions);
示例#2
0
        public override string ToString()
        {
            string updatedAddresses = string.Join(
                string.Empty,
                UpdatedAddresses.Select(a => "\n    " + ByteUtil.Hex(a.ToArray()))
                );

            return($@"{nameof(RawTransaction)}
  {nameof(Nonce)} = {Nonce.ToString(CultureInfo.InvariantCulture)}
  {nameof(Signer)} = {ByteUtil.Hex(Signer.ToArray())}
  {nameof(PublicKey)} = {ByteUtil.Hex(PublicKey.ToArray())}
  {nameof(GenesisHash)} = {ByteUtil.Hex(GenesisHash.ToArray())}
  {nameof(UpdatedAddresses)} = {updatedAddresses}
  {nameof(Timestamp)} = {Timestamp}
  {nameof(Signature)} = {ByteUtil.Hex(Signature.ToArray())}");
        }
示例#3
0
        public DeltaCache(IHashProvider hashProvider,
                          IMemoryCache memoryCache,
                          IDeltaDfsReader dfsReader,
                          IDeltaCacheChangeTokenProvider changeTokenProvider,
                          ILogger logger)
        {
            var genesisDelta = new Delta {
                TimeStamp = Timestamp.FromDateTime(DateTime.MinValue.ToUniversalTime())
            };

            GenesisHash    = hashProvider.ComputeMultiHash(new Delta().ToByteArray());
            GenesisAddress = GenesisHash.ToBase32();

            _dfsReader    = dfsReader;
            _logger       = logger;
            _entryOptions = () => new MemoryCacheEntryOptions()
                            .AddExpirationToken(changeTokenProvider.GetChangeToken())
                            .RegisterPostEvictionCallback(EvictionCallback);

            _memoryCache = memoryCache;
            _memoryCache.Set(GenesisAddress, genesisDelta);
        }
示例#4
0
        public Bencodex.Types.Dictionary ToBencodex()
        {
            var updatedAddresses =
                UpdatedAddresses.Select(addr => (IValue)(Binary)addr.ToArray());
            var dict = Bencodex.Types.Dictionary.Empty
                       .Add(NonceKey, Nonce)
                       .Add(SignerKey, Signer.ToArray())
                       .Add(UpdatedAddressesKey, updatedAddresses)
                       .Add(PublicKeyKey, PublicKey.ToArray())
                       .Add(TimestampKey, Timestamp)
                       .Add(ActionsKey, Actions);

            if (GenesisHash != ImmutableArray <byte> .Empty)
            {
                dict = dict.Add(GenesisHashKey, GenesisHash.ToArray());
            }

            if (Signature != ImmutableArray <byte> .Empty)
            {
                dict = dict.Add(SignatureKey, Signature.ToArray());
            }

            return(dict);
        }
示例#5
0
 public override string ToString()
 {
     return($"{Protocol}.{ProtocolVersion} chain: {ChainId} | diff: {TotalDifficulty} | best: {BestHash.ToShortString()} | genesis: {GenesisHash.ToShortString()}");
 }