Miner’s pool and Mempool relationship

I am wondering why we need Mempool (central and aggregated pool) while each miner has its own pool?

If we need the Mempool as an architectural design, how we can make sure that miners are sending their transactions to Mempool?

Is that possible for a miner to confirm a transaction on its own(Privately) but not send it to the Mempool(Shared-Public Pool?

Please correct me if my understanding from Miner pool as a private and the Mempool as a public area is not correct.

Thank you

client – A wrong deal: the status is “0 / unacknowledged, not in memory pool “

I started a transaction with bitcoin-0.21.0-win64, a Windows client. It may be that the fee is set too low, which leads to the unsuccessful transaction. What should I do in the future? What do I need to do? How to implement the specific operation steps? Below is the transaction details, please help! Thank you very much!

Status: 0 / unacknowledged, not in memory pool
Date: 2021 / 3 / 8 12:31
To: coin an 1kgsxf7krv1ab99tex1wjm643tsilczbg6
Expenditure: – 0.05193365 BTC
Transaction fee: – 0.00120000 BTC
Net amount: – 0.05313365 BTC
Transaction ID: aceea84e8a72b24654cba7b1d042561d8a9d36f7828855b52012de8a5a0b9c12
Total transaction size: 11767 bytes
Transaction Virtual Size: 11767 bytes
Output index: 0

node.js – nodejs mysql on pool connection Error: Connection lost: The server closed the connection

My question is similar to this post but the solution didnt work for me probably because im using a different type of mysql connection (pool). This is my code:

    let config= {
        host: '***',
        user: 'admin',
        password: '***,
        port: '3306',
        database: '***',
        multipleStatements: true
    };

const con = mysql.createPool(config);
select();
function select(){
    return new Promise((resolve, reject) => {
        con.getConnection(function (err, connection) {
            if (err) throw err;
            else
                console.log("Connected!");
            let sql = "SELECT * FROM bidPrice WHERE idExchangePlatform = 2;";
            connection.query(sql, function (err, results, fields) {
                connection.release();
                connection.destroy();
                if (err) throw err;
                console.log(results)
                resolve(results);
            });

        });
    });
}

I also important to mention that im running this function using the following command

node –max-old-space-size=31744 index.js # Increase to 31 GB

This is because im working with millions of records from the database query If i run this with regular node command i would be getting Javascript heap out of memory

When i tried integrating the solution i mentioned earlier to my code i just get a “killed” log after a while and then the process stops, should i handle server disconnect in a different way when using mysql.pool?

enter image description here

How does the mining pool know our hashrate/our share?

Scenario:

  1. Person A: has a good mining rig and run for 24 hours and produces: 1000 mega hashes, but found only 1 share.

  2. Person B: has a bad mining rig and run for 24 hours and produces: 1 mega hash, but found 1 share on first attempt

Question:
So, how does mining pool know, if we have actually gone through all the 1000 mega hashes to submit one share to the mining pool (Person A has done more work than person B)?
But person B who has low hashing power already found a share but has not done any work compared to person A

How does mining pool get to know if Person A has done more work than Person B, as miner does not submit any unsuccessful hashes but the successful ones, but already more work has done.

c++ – Good practice for effective access to “sub-aspects” of class pool

I guess the question sounds strange to experienced programmers, but I don’t know how to phrase
it better. So let me explain:

Let’s stress that omnipresent animal example once more… and say I want to write a function: runSafari().
There is an object pool of 10 animals (animal*). 2 ostrich, 5 mosquitos, 2 spiders and a snake. All inheriting animal. Both snake and spider are poisonous so they have data reflecting it for example let’s say they additionally inherit Ipoisonous.
The mosquito inherits Iflyer. And the ostrich is left out in the cold.
Now with poisonous animals around one thing to do in such a safari would probably be to prepare some antivenom… so let’s have prepareAntidote(). This functions job would be to check what kind of antivenom is needed and simply print it out.
“Ipoisonous” forces spider and snake to have const std::string& getVenomName(). Animal doesn’t.
So the brute force approach would probably make use of dynamic_cast<Ipoisonous*> while iterating over all animals. Wasteful. And as bad is the fact that prepareAntidote() function needs to know what an animal is to handle the pool.
So it would most probably be better for it to work on a container<Ipoisonous*>&, wouldn’t it?

My idea is to have each interface in it’s constructor register it’s instance in some storage-class that has a container of pointers for each interface/abstract/sub class. (to avoid the term “manager”-class…)
And ofc remove/delete that entry in it’s destructor. So far an unordered_map looks the most reasonable for that job, with roughly constant time for access and removal, as well as not invalidating anything except on rehash. The pointer being it’s own key value.

It’s actually the same problem with composition like components for example in games. (that’s why I’m writing it here, because of that, chances may be higher to find answers here)
In this case it screams for “object pooling” ofc, but let’s cast aside memory locality in this case,
that should be quite easy to add in later with overloading operator-new in such a case.

So my question is how to handle such a situation? What’s considered good practice here? Would my approach be wrong thinking with caveats later?

Sorry again for the spongy description if there is a special term to refer to this problem, please tell me.

best regards

Would it be profitable to host a mining pool? (BTH/BTC/ETH/ETC/LTC/DOGE)

  1. Lets say I have 500MH/s going through, what hardware will I need?
  2. What other crypto would be profitable mining?
  3. Would it even make sense/money competing/starting?
  4. What features are essential/recommended for competing/starting?

I want to have a basic mining pool with ~5-10 currencies,and some basic tools.
Maybe could hosted, so it scales to demand.
Would it be worth it?

Can large data deletion affect Innodb buffer pool performance?

At the beginning of this year we lunched a lot of massive data deletions (millions of rows per week) in our production database. Also, there is an automatic integration of new data (insert/updates) of 10 to 25 .CSV files per day with a global/average size of 400MB.

We noticed that reading performance on data even with full using of index became too slow. We have about 122GB of daya with 60GB of RAM and I configured 48GB for the Innodb buffer pool (please check details in images).

Is the deletion affect buffer pool performance ? What is the best/fast way to resolve that issue ?

Thank you for your help.

config1

detail

Bitcoin Mining Pool setup – Pool does not own wallet address

I have setup multiple pools in the past for different Algo using NOMP, UNOMP, MPOS, YIIMP, etc open source solution. But it is first time I am setting a pool for Bitcoin – Tried UNOMP, NOMP, and NiceNOMP already. Mining works perfectly fine. Blocks are found, submitted, and balance is also visible in the node.

However, the payouts doesn’t work. On checking the logs, I see an error

Daemon does not own pool address - payment processing can not be done with this daemon, {"isvalid":true,"address":"<wallet-address","scriptPubKey":"<script-publickey>","isscript":false,"iswitness":false}

I have triple checked wallet address with.

bitcoin-cli getaddressesbylabel ""

It belongs to the node. Just to be 100% sure, I also tried

bitcoin-cli dumpprivkey <wallet-address>

I did receive the private key for the wallet address specified. Further, I also updated the conf file to use legacy address only:

 addresstype=legacy

Node and pool are hosted on the same server connecting through 127.0.0.1

Below is the config file removing the obvious security details:

rpcuser=
rpcpassword=
txindex=1
server=1
addresstype=legacy
fallbackfee=0.00001

Identify which mining pool mined a block

After reading few Q&A it seems the only ways to identify mining pool from a block is coinbase text or output address of coinbase transaction if a known address is used for rewards and fees.

Can we add something in Bitcoin protocol that makes it easier to identify which mining pool mined a block?

If we had better ways to identify or register mining pools regularly and reject blocks based on certain rules it can be helpful in soft forks activation mechanism.

For example:

  1. All mining pools are informed about a soft fork, they discuss it and don’t have any issues with it.

  2. Every full node maintains a list of addresses associated with mining pools. This list is automatically created using coinbase text and address used for coinbase transaction in next 2016 blocks.

  3. During signalling for a soft fork if any mining pool changes it’s opinion which affects Bitcoin development, it will get less reward. Any block mined by bad actor with wrong reward is rejected. Any block mined by someone that does not belong to the list is rejected. This can be followed for next 1 year and remaining amount can be equally distributed to other pools.

Change in opinion can be because of many reasons including legit concerns or arguments. The only way to manage such exceptions is define a time period until which opinion can be changed followed by proper communication. For example: Mining pools cannot change their opinion after 75% signalling in support or last couple of weeks (whichever comes first)

Why do I think this is necessary?

  1. Mining pools already have rewards associated with their work. Invalid blocks are rejected by nodes. However, mining pools still have lot of freedom to include any transactions in blocks. Recently we have even seen few mining pools involved in censorship.

  2. Miners are involved in Bitcoin for incentives. Not every miner is a cypherpunk or care about security of the network. We need to define how much involvement such businesses have in changing Bitcoin protocol.

  3. Lot of people are concerned about risks involved in UASF but it’s not difficult to attack Bitcoin or affect Bitcoin development for a government or few altcoins by getting involved in mining, make money and misuse the opportunities given with no risks involved. Iran, Pakistan, Russia, Venezuela, China, US, etc. getting involved in mining can affect Bitcoin development.