Proof-of-Transfer (PoX) whitepaper

Hi everyone,

First, thanks to everyone for the vigorous discussion and valuable feedback on SIP-007! :pray:t4: See the forum post Stacking: a New Consensus Algorithm for Blockchains for more context.

Your comments and questions have been extremely helpful in refining the ideas that we had originally laid out.

After many iterations, we’re excited to announce the publication of “Proof of Transfer Mining with Bitcoin”! In this whitepaper, we formally propose the Proof of Transfer (PoX) mining mechanism as a generalization of Proof-of-Burn (see SIP-001) and outline how PoX might manifest in Stacks 2.0.

We look forward to working with the community to continue improving on PoX. With PoX, we believe we can combine Blockstack with Bitcoin to power a truly user owned internet.

Important disclaimer

The Securities and Exchange Commission (SEC) has qualified the offering statement that we have filed with the SEC under Regulation A for our offering of certain of our Stacks Tokens. The information in that offering statement is more complete than the information we are providing now, and could differ in important ways. You must read the documents filed with the SEC before investing. The offering is being made only by means of its offering statement. This document shall not constitute an offer to sell or the solicitation of an offer to buy, nor shall there be any sale of these securities in any state or jurisdiction in which such offer, solicitation or sale would be unlawful prior to registration or qualification under the securities laws of any such state or jurisdiction.

An indication of interest involves no obligation or commitment of any kind. Any person interested in investing in any offering of Stacks Tokens should review our disclosures and the publicly filed offering statement and the final offering circular that is part of that offering statement here . Blockstack is not registered, licensed or supervised as a broker dealer or investment adviser by the SEC, the Financial Industry Regulatory Authority (FINRA) or any other financial regulatory authority or licensed to provide any financial advice or services.

Forward-looking statements

This communication contains forward-looking statements that are based on our beliefs and assumptions and on information currently available to us. In some cases, you can identify forward-looking statements by the following words: “will,” “expect,” “would,” “intend,” “believe,” or other comparable terminology. Forward-looking statements in this document include, but are not limited to, statements about our plans for developing the platform and future utility for the Stacks Token, our Clarity smart contracting language, and potential mining operations. These statements involve risks, uncertainties, assumptions and other factors that may cause actual results or performance to be materially different. More information on the factors, risks and uncertainties that could cause or contribute to such differences is included in our filings with the SEC, including in the “Risk Factors” and “Management’s Discussion & Analysis” sections of our offering statement on Form 1-A. We cannot assure you that the forward-looking statements will prove to be accurate. These forward-looking statements speak only as of the date hereof. We disclaim any obligation to update these forward-looking statements.

6 Likes

The incentives to be a Stacks node is fairly clear to me:

  • financial - you invest a chunk of money to obtain ~100K of STX which you “lock up” in Stacking and in return you get a recurring income stream via the BTC rewards.
  • business - you or your company is participating in the Blockstack ecosystem in some way (eg. app dev, exchange or other service provider, etc.) and so you have a motivation to help ensure the blockchain stays running correctly.

What’s less clear to me is the incentives for being Stacks miner:

  • business - OK, incentives are the same as for Nodes.
  • financial - miners are essentially trading a more stable/desirable asset (BTC) for a lesser one (STX) and so is this a dis-incentive?
1 Like

One way to think about this is that relative to Proof-of-Burn, Proof-of-Transfer is no worse for miners that choose not to participate in Stacking (they’re using up their BTC either way), and strictly better if they do (since they can have a cost advantage over miners that don’t).

Independent of Stacking, miners will only mine if it’s profitable – that is, if getting STX via mining is cheaper than buying STX outright.

The way I interpret this then is that the only, or main, incentive for a miner is profits via arbitrage on the price of STX<>BTC between what’s trading on exchanges at that moment and that of Stacks miner commits/bids for that mining round. Is that Right? If it turns out this profit margin is small, will that tend to result in few miners participatiing?
Granted there is also some % of miners might be speculating on the prospect that the STX they mine could go up in value more than the BTC they spent for it. But that’s a different potential incentive. And I think you need more than this if you don’t want a big drop off of miners when STX is in a bearish trend on the exchanges.

Page 2 has a typo I think …

In SIP-001, we proposed a proof-of-burn (PoB) mechanism for the design of the
Stacks 2.0 chain [5].

I think this should read “design of the Stacks 1.0 chain”

Here, I took this quote from page 3 and replaced only PoB with STX and “burn” with “TRADE”

However, in the early days of the STX chain, this cryptocurrency may not have as much value or security as the base cryptocurrency, Bitcoin. Before the STX chain matures, and the new cryptocurrency gains value and stability, miners may be unwilling to TRADE Bitcoin in order to participate.

Is it potentially a plausible scenario, and if not why?

PoX can help to solve the bootstrapping problem for new blockchains: participants receive rewards in a separate, potentially more stable, base cryptocurrency. These re-wards may be a better incentive for initial participation than rewards in the new cryp-tocurrency itself. Establishing this initial value for the new cryptocurrency can help improve miner interest, which in turn helps grow the new cryptocurrency ecosystem. By providing a base-cryptocurrency incentive for new-cryptocurrency participants, PoX escapes the spiral of dependent value that may threaten a new blockchain.

I find this paragraph unclear as it talks about STX “participants” incentivised by BTC rewards but miners are also “participants” since they are receiving STX rewards. Also how “this initial value” is established and can improve miner interest is not clear to me.

My first thought on the Developers Fund topic was if this was more generalized, is it not similar to a type of DeFi use? Meaning, it is sort of a type of income-generating locked-up investment, right? And so could it be used also for things like a kind of income producing Trust, where say rewards are unlocked/spendable but the principle amount is locked in a multi-sig until a future date such as a child’s 18th birthday. You’re also potentially less likely to get cries of “self enrichment” if you talk about this generically rather than specifically for developers, even if this is meant as non-Blockstack dev’s.

page 5 typo:

In SIP-007, progression in the [missing?] happens over reward cycles.

The whitepaper explains PoX with a lot of references to PoB, it would be good to have all in one paper.

Does PoX affect liveness of the chain? PoX is presented as a possible solution for bootstrapping a new chain. Does the use PoW chain have an incentive to keep the new chain alive?

A chain using PoX should have a path to replace PoX with other consensus algorithms.

I agree with Friedger on the PoB references subject. It’s too hard to find, for example the details of the algo for weighted Bitcoin sent. Not the exact implementation details but just to understand what “weighted” means more than the obvious - the more BTC committed the better the odds of becoming a Leader.

Leaders for particular Stacks blocks are chosen by sortition, weighted by the amount of Bitcoin sent (for more details, see SIP-001 [5]).

4.1 Addressing Miner Consolidation
…miners that also participate as holders could gain an advantage over
miners who do not participate as holders, miners would be strongly incentivized to
buy the new cryptocurrency and use it to crowd out other miners.

I look at this as similar to how a bitcoin miner can buy more or newer/faster hardware, increase hash-power to crowd out rivals. The constraints to doing this is capital investment and time/resources. To approximate this with Stacking/PoX maybe holders/nodes who want to participate in Stacking need to commit the STX some number (hundreds?) of blocks before their participation becomes activated - so time-delayed Stacking Node activation. Perhaps this can give time for rivals (or Stacking pools) to discover this and have time to also take action?.. it’s like bitcoin miners being able to see competitors installing more hash power. Alternately instead of X number of blocks time-delayed node activation it could be some well-known block number, like only at every 10,000 blocks, new nodes are allowed to join/activate. That way participants only need to pay attention at those well known times.
Another implementation thought is the reward algo could be weighted by how much time has passed since that Stacking node went-live. Eg., when a node first joins, it’s STX is locked up, but it’s rewards start relatively low and approach 100% over time. This again slows down miners attempting to quickly gain an unfair advantage by buying a lot of STX and spinning up a bunch of nodes.

I wonder if there should be a section on also Addressing Node Consolidation ?

STX market at time of writing this is cap:$82M supply:509M price:$0.16
The proposal for Stacking nodes to require a qty of STX equal to 0.02% of the token float means an investment of 102K STX or about USD$16K. This is already the price of a good car in some countries like Brazil, India, Russia, etc.
It’s assumed the price of STX, in terms of fiat/dollars, will go up over time and potentially greatly so. So if the price of STX/USD goes up 2X, 5X, to 10X the fiat investment required to participate in Stacking quickly passes the price of an average house in many countries. This will tend to lower participation and decentralization geographically (rich vs poor countries) and in terms of economic classes; it will mean only relatively wealthy entities (people, companies, political org’s, etc.) could end up with a disproportionate control over Stacking versus the average Stacks/Web3 user, programmer, Blockstack eco-system participant.
Also, as we saw in the “segwit war” of bitcoin, corporate/business entities can have very different incentives/motives than the majority of blockchain users. I think it was helpful in that struggle that bitcoin nodes are free to run, and are run in the 10’s of thousands, and so have power (in numbers) to enforce the chain/consensus rules by running the code of their choice.
And while STX Pools might help with this problem, I don’t think it will solve it completely.

So perhaps some thought should be given to the implications of alternate Node requirements.
Such as instead of a fixed 0.02% quantity:

  • what happens if the % amount goes down over time to compensate for the token price and token float increasing?
  • what if the % approaches zero over the long term? (ie bitcoin’s zero node cost)
  • If it’s desirable to have a smaller number of heavily vested/staked entities during the early bootstrapping phase of Stacks (ie like some chains’ “masternodes”) such as Blockstack founders, early investors, etc., does that model and incentives also align with long-term goals and later (post bootstrapping) growth phases?

In other words, maybe a model which starts out similar to a “masternode” (small quantity of nodes) model but then transitions over time to something more like that of Bitcoin with 10’s of thousands of full-nodes.

Also, don’t ignore the perception of “fairness” by the crypto community. Larger rewards for founders and early investors are warranted, but a design that is more inclusive and “fair” to future participants can be helpful in various ways.

And I’ve wondered if a project like Dash which has the masternode model, if it has suffered from problems associated with entities that are heavily-staked and heavily-rewarded acting in a way that supports status-quo, their own enrichment, at the expense of project progress.

sorry for the bad format here - I was kinda idea streaming (thinking out loud). :wink:

1 Like

This really is the crux of the issue with discount mining. Miners cannot be allowed to stack their STX, because if they can do so, then it would only be a matter of time before a cartel of discount miners will arise, and price everyone else out of the mining market. I don’t think there’s a variation of Stacking that avoids this outcome entirely, short of making it so PoX with Stacking automatically transitions towards a more “stable” form of PoX, like PoB or a PoX-to-dev-fund (the protocol should probably time-lock the BTC outputs too, until after the transition takes place, so that while PoX with Stacking is active, miners can’t just flip their BTC to more STX).

If the protocol did do such a transition, I think it would need to be automatic, since we can’t expect miners to willingly vote away future gains. As you point out, corporate/business entities can have very different incentives that are not aligned with the long-term health of the system.

Haha all good! I think I speak for everyone here when I say we appreciate your feedback :wink:

1 Like

fer sure dat :wink:

This was some quesitons/topics left over from @muneeb 's online town-hall talk today:

Stacks Miners - hacks/ddos of bitcoin connectivity/Tx’s and wallets is a potential remote attack vector with PoX, whereas with bitcoin mining, you’d have to shutdown the miner’s electricity or hardware, or I guess their network connectivity. If a bitcoin miner got hacked it could lose BTC but there’s no impact on the blockchain. A PoX miner’s BTC wallet gets hacked and it’s mining is potentially shut down. Will Blockstack be creating hot and/or cold BTC wallets as part of the Stacks miner code to help with security? Related to this, it seems like redundant internet connections like Blockstream’s Satellite service could be helpful to PoX miners dependent on Bitcoin connectivity - or some other solution (mesh-net?)

Will Stacks 2.0 Alpha/Beta pre-release phase be open for all to participate by running Github Dev branch? Will there be a testnet using test-btc and test-stx? Where do we get test-STX?

Is Blockstack building the Stacking Pool software or leaving this for 3rd parties?

Stacks 2.0 miner requires a bitcoin full node with copy of the entire bitcoin chain DB, or can it also be run “light” with a connection to a trusted bitcoin full-node?

Will there be formal study of PoX game theory, stock to flow, etc by specialists?

The mining software will need access to a Bitcoin private key in order to generate block-commit Bitcoin transactions. However, it’s trivial to treat this as a “hot wallet” that you can fill up with a “cold wallet” periodically. This is similar to the design of the subdomain registrar, for example. The mining software could be further modified so it only generates the block-commit transactions offline from your known set of UTXOs, and relies on you to relay the transaction itself.

Designing reliable open-membership peer networks is an arms race. The Stacks p2p network employs a few tactics to avoid the kinds of network-level attacks we’ve seen in the past:

  • The software ships with a list of AS numbers and prefixes (which you can supply yourself), which is used to help nodes select neighbors from different organizations and ASs. This helps nodes avoid eclipse attacks.
  • Stacks peers establish ephemeral public keys when they handshake, and they sign p2p messages sent to one another. This makes it harder for attackers to MITM connections to your known neighbors.
  • Stacks peers relay transactions in blocks in a way that is prefers nodes that live in the rarest-observed ASs. This helps make sure that data quickly propagates to many different networks under many different administrative domains, which makes censorship difficult.
  • Stacks peers pull blocks from one another in rarest-observed order (like BitTorrent does with chunks) in order to ensure that data that is rare in the p2p network quickly becomes commonplace.
  • Stacks peers exchange information about their view of the BTC network with each p2p message they exchange, so they’ll be able to detect long-lived BTC forks (which are evidence on attacks on the BTC network, including attacks on their own “parent” BTC nodes).
  • The p2p protocol implements a “traceroute” feature that lets each peer build up a view of the relay network. This, in turn, helps the node detect and avoid “relay choke points” that, if the went down, would cause a network partition.

Yes, these are good ideas :+1:. I would add that since there’s no such thing as an indestructible peer network, the best defense against network attackers is to build a culture of vigilant node operation that encourages people to regularly be on the look-out for unhealthy network conditions.

Yes, but it’s the master branch now :+1:

Yes, there will be a public global testnet. At first, it’ll be built on a set of regtest Bitcoin nodes (since it’s easy to build a faucet for them, and easy to preserve logs from it). After that’s working well enough, it can be transitioned to the Bitcoin public testnet itself (which is a less forgiving environment than even Bitcoin mainnet).

Will let @jeffd comment on this.

The Stacks 2.0 node just needs known-good Bitcoin block headers. It will need to talk to a full Bitcoin node in order to get the block data, but it checks the blocks against the headers for authenticity. I’m in favor of making it so people can use a separate node for their headers, so they can use a small local trusted node that they run themselves (and then they can just pull full blocks from the peer network).

Yes; this is in-progress.

I couldn’t figure out how to get the direct link from my Discord post in #app-mining but related to my questions about the testnet was an idea I threw out there that Patrick and some others in the community thinks might be worthwhile (remains to be seen)…

It is a kind of “game-ifying” of the Stacks 2.0 testnet in order to incentivize participation and help find problems in the early-release (beta) code. The idea is to setup rewards in real STX/BTC not unlike the app-mining program for actions taken on the testnet with testnet-funds.
But in this case there would be rewards given for things like confirmed/accepted Github bugs. And a bigger “bounty reward” if anyone is able to hack/steal funds from Miners or Stacking Nodes. Prize/rewards would also be given out for things like (up for discussion) best use of a Clarity contract in a test app, etc.
Furthermore, there would be a competition between Stacking participants where each entry is given a set amount of test-BTC and test-STX at the beginning they can use to run as many Stacks Miners and Stacks Nodes as they care to. At the end of the game (some time frame) he/she who ends up with the most total test-crypto value at the end of the period (who “gamed” the system the best) wins a prize in real BTC/STX. This will motivate them to put real effort into trying to game the system. The game/simulation details and rules aside, the idea here is to try to simulate on the testnet something like the real world main-net might be in order to gain some data/insights and find whatever types of problems might crop up. Awards for things like Clarity contracts and Clarity-Test-Apps obviously might also help get 2.0 apps and Clarity dev going in parallel to the 2.0 core platform being developed and tested, potentially speeding up 2.0 tech uptake on main-net. Also, can help fill in for App-mining paused? Now the specific rules of the game, size of the rewards, judging details of the various rewards is something to be hammered out by the community and Blockstack team. One thought off the bat is players can’t be allowed to acquire/add more test-crypto above what they were given at the start of the game.

@dant on Discord said that the Cosmos project did exactly this kind of thing. So much for my novel idea :wink:

Do you think it will run fine on a Raspberry Pi4 (2GB or 4GB ram) potentially with Bitcoin Lightning (requires bitcoin full-node) running as well as Blockstack miner/node? Having everything running on a single always-on device is easier for people to setup/run, if device (Pi4?) resources are sufficient.

I’m not sure yet, since there isn’t yet a Stacks 2.0 public testnet (only a locally-hosted one). Will keep you posted once I know more about the resource usage. I don’t expect that the node or miner will need very many resources (certainly less than Bitcoin), since both the chain state and its materialized views aren’t kept in RAM (unlike Bitcoin, which keeps a UTXO index in RAM at all times).

1 Like

Currently core wont build on pi4. https://github.com/blockstack/blockstack-core/issues/1278. Hopefully a potential fix soon.

1 Like

@jude, @xan Re: discount mining and time-bounded PoX.

One potential alternative, kinda a follow on from my previous thoughts so sorry if part of it has already been discussed. A potential solution that does not resort to PoB?.. combining:

  1. ​​A maturity/lock-up time where STX submitted to a Stacking node contract must wait before becoming an active node.
  2. ​​A declining threshold over time for the minimum amount of STX needed to participate in Stacking.

    ​​The idea here is that in the long term there should be many more nodes (eg. the bitcoin network) than there is at network launch due to the lower node cost (STX lockup) and so more competition for rewards and therefore less incentive for the miners to dedicate STX to stacking in the future. Stacking maturity/lockup would only come after the maturity/unlock of the STX mining reward. At that point in time the miner would face the choice of what to do with the STX… sell/trade, or use it in some other way or lock it up again in a Stacking contract.

The declining stacking participation threshold could be perhaps just pegging it to a minimum fiat/USD value instead of a fixed number of STX (0.02%), since it’s assumed fiat spending power goes down over time versus USD/STX price going up. This means over time the number of STX required to participate in stacking goes down. Now more nodes and less rewards/node means less incentive for long-term stacking participation, in the long term there should be other motivations to run nodes and ensure network integrity by eco-system participants - dev’s, exchanges, businesses, investors, etc.

If compared to when the network launches, the amount of STX per node in the future is lower, but there are many more nodes. What implications would that have to the network security, etc.? If the Stacks network has 10’s of thousands of nodes, like bitcoin, that’s better right, more decentralization?

1 Like

Good idea! It could consider various type of tests, and for each of them have some kind of rewards. Not all the themes are of interest for all.

Hey @fluidvoice, I’m generally skeptical about paying anyone on the Internet for opening Github issues or running nodes, because in practice this tends to encourage a lot of time-wasters just opening up random issues or complaining (falsely) that they ran a node but we couldn’t see it and hoping they get lucky (I’ve seen both sorts of things first-hand). But, I’m definitely open for something more involved like a Can’t-Be-Evil contest for who can build the best smart contract. I’m also open to creating a more “prestige-driven” leader board system for running testnet nodes, like an app that tracks whose node has mined the most blocks or whose node has the highest uptime or most transaction data relayed.

2 Likes

Do you think “prestige” is enough incentive or such contests should have a financial reward to create more motivation/effort?

Also, any thoughts yet on my miner-centralization post? >>

1 Like