private void CreateWitness(WitnessCreateContract contract) { WitnessCapsule witness = new WitnessCapsule( contract.OwnerAddress, 0, contract.Url.ToStringUtf8()); Logger.Debug( string.Format( "CreateWitness, address[{0}]", witness.ToHexString())); this.db_manager.Witness.Put(witness.CreateDatabaseKey(), witness); AccountCapsule account = this.db_manager.Account.Get(witness.CreateDatabaseKey()); account.IsWitness = true; if (this.db_manager.DynamicProperties.GetAllowMultiSign() == 1) { account.SetDefaultWitnessPermission(this.db_manager); } this.db_manager.Account.Put(account.CreateDatabaseKey(), account); long cost = this.db_manager.DynamicProperties.GetAccountUpgradeCost(); this.db_manager.AdjustBalance(contract.OwnerAddress.ToByteArray(), -cost); this.db_manager.AdjustBalance(this.db_manager.Account.GetBlackHole().CreateDatabaseKey(), +cost); this.db_manager.DynamicProperties.AddTotalCreateWitnessCost(cost); }
public void DumpParticipationLog() { StringBuilder builder = new StringBuilder(); int[] block_filled_slots = this.db_manager.DynamicProperties.GetBlockFilledSlots(); builder.Append("Dump articipation log \n ") .Append("block filled slots : ") .Append(string.Join("", block_filled_slots)) .Append(",") .Append("\n") .Append(" Head slot:") .Append(GetHeadSlot()) .Append(","); List <ByteString> active_witness = GetActiveWitnesses(); active_witness.ForEach(active => { WitnessCapsule witness = this.db_manager.Witness.Get(active.ToByteArray()); builder.Append("\n") .Append(" Witness : ") .Append(witness.ToHexString()) .Append(",") .Append("LatestBlockNum : ") .Append(witness.LatestBlockNum) .Append(",") .Append("LatestSlotNum : ") .Append(witness.LatestSlotNum) .Append("."); }); Logger.Debug(builder.ToString()); }