PEP-10: Returning a Mistaken DAO Fee

Attributes

  • Author(s): @JackALaing
  • Recipient(s): 8353fbc449131aa778f71654b01dcb52bc2c7778
  • Category: Return
  • Asking Amount: 363,636.363636 POKT

Summary

It has come to my attention that a community member made the mistake we all dread making: they swapped the fee and amount values when sending their POKT.

90.91% (10/11ths) of the fee for every transaction goes to the DAO, so we have the means to return the majority of their lost funds, and the block producer has already returned the remaining 9.09% they received.

Motivation

It is possible for the DAO to return the funds, so we should. I see this as an opportunity to set a positive precedent for the UX of our infrastructure service. This type of risk is exactly the kind that discourages mainstream adoption of cryptocurrencies and Web3 infrastructure. So, for the same reason that we are evolving our protocol to offer quality assurances in Pocket 1.0, I believe it may help to offer de-risking assurances like an automatic return of mistaken DAO fees, and I’m now considering a separate proposal to authorize the Foundation to return to sender in scenarios like this.

Rationale

Just to confirm that this happened and that the asking amount is correct…

Here’s the transaction (note the fee amount):

{
    "hash": "ADC5030504BE3C2C2F8322404F08E96143898936A3CCF71C17BA15690B45E1DE",
    "height": 35261,
    "index": 249,
    "stdTx": {
        "fee": [
            {
                "amount": "400000000000",
                "denom": "upokt"
            }
        ],
        "memo": "",
        "msg": {
            "type": "pos/Send",
            "value": {
                "amount": "1000000",
                "from_address": "8353fbc449131aa778f71654b01dcb52bc2c7778",
                "to_address": "4405b501228f47a54ef334fcb3ffdd286cd00793"
            }
        },
        "signature": {
            "pub_key": "2b9255c132152dde7f01c76dd0627b76c0e0a6b6df3d71a9ad5f3b71a792875c",
            "signature": "3b7c9aacd7165e49ec2f66365d6207eac88bdbf13360a69516490fcd6d7d2d5a2a84ab7c1b95c84f75401b2124f6b31dc65fa7bbf86591c8491a94a89383840f"
        }
    },
    "tx": "0wEKSQoQL3gubm9kZXMuTXNnU2VuZBI1ChSDU/vESRMap3j3FlSwHctSvCx3eBIURAW1ASKPR6VO8zT8s//dKGzQB5MaBzEwMDAwMDASFQoFdXBva3QSDDQwMDAwMDAwMDAwMBpkCiArklXBMhUt3n8Bx23QYnt2wOCmtt89camtXztxp5KHXBJAO3yarNcWXknsL2Y2XWIH6siL2/EzYKaVFkkPzW19LVoqhKt8G5XIT3VAGyEk9rMdxl+nu/hlkchJGpSok4OEDyjg2+bL9MeBxKAB",
    "tx_result": {
        "code": 0,
        "codespace": "",
        "data": null,
        "events": null,
        "info": "",
        "log": "",
        "message_type": "send",
        "recipient": "4405B501228F47A54EF334FCB3FFDD286CD00793",
        "signer": "8353FBC449131AA778F71654B01DCB52BC2C7778"
    }
}

Here’s the transaction of the block producer returning their share of the fee (9.09% of 400k):

{
    "hash": "A011851A0FBEBDA3239A370DDD055147737EE17A3372F6A7C8CEFE9D3A26B0C5",
    "height": 35267,
    "index": 263,
    "stdTx": {
        "entropy": 5405213912510651000,
        "fee": [
            {
                "amount": "10000",
                "denom": "upokt"
            }
        ],
        "memo": "karma", 
        "msg": {
            "type": "pos/Send",
            "value": {
                "amount": "36363636363",
                "from_address": "8585169f77d03a8cb28664737ff5359f644b7087",
                "to_address": "816fc3f922646dfceea5ae6a4d26226e0f1fa281"
            }
        },
        "signature": {
            "pub_key": "54e7a0c0896940f14c971471f31c1e8b093a5ee2692c179bdf6e063fcf186d93",
            "signature": "24afeb2fb784eaafe36814b17473b557fc36af41f755248a42b35d1166026100ee567722c70d134b9071be2adb661774587e03cbccf5a73cfff6edb238b27402"
        }
    },
    "tx": "1gEKTQoQL3gubm9kZXMuTXNnU2VuZBI5ChSFhRafd9A6jLKGZHN/9TWfZEtwhxIUgW/D+SJkbfzupa5qTSYibg8fooEaCzM2MzYzNjM2MzYzEg4KBXVwb2t0EgUxMDAwMBpkCiBU56DAiWlA8UyXFHHzHB6LCTpe4mksF5vfbgY/zxhtkxJAJK/rL7eE6q/jaBSxdHO1V/w2r0H3VSSKQrNdEWYCYQDuVncixw0TS5BxvirbZhd0WH4Dy8z1pzz/9u2yOLJ0AiIFa2FybWEopLbJsaWty4FL",
    "tx_result": {
        "code": 0,
        "codespace": "",
        "data": null,
        "events": null,
        "info": "",
        "log": "",
        "message_type": "send",
        "recipient": "816FC3F922646DFCEEA5AE6A4D26226E0F1FA281",
        "signer": "8585169F77D03A8CB28664737FF5359F644B7087"
    }
}

And here’s the DAO’s treasury increasing by 90.9% of 400k (plus the normal fee revenue):

pocket query account 6386713deb27b609daad5e2e32ee6591753e5f4e 35261
{
    "address": "6386713deb27b609daad5e2e32ee6591753e5f4e",
    "coins": [
        {
            "amount": "51468870589227",
            "denom": "upokt"
        }
    ],
    "name": "dao",
    "permissions": [
        "burner",
        "minter",
        "staking"
    ],
    "public_key": null
}

pocket query account 6386713deb27b609daad5e2e32ee6591753e5f4e 35262
{
    "address": "6386713deb27b609daad5e2e32ee6591753e5f4e",
    "coins": [
        {
            "amount": "51832658336772",
            "denom": "upokt"
        }
    ],
    "name": "dao",
    "permissions": [
        "burner",
        "minter",
        "staking"
    ],
    "public_key": null
}

Dissenting Opinions

Some might argue that this is a precedent we don’t want to set because it won’t be possible to do this every time someone makes this mistake as we scale. However, there are a few reasons I expect this won’t happen often:

  • We are not a transactional cryptocurrency. Transactions will be happening far less than they do in networks like Bitcoin and Ethereum. And when they do happen it will be for larger sums that encourage more caution.
  • Our users are technical professionals who are less likely to make these kinds of errors.
  • As our ecosystem matures, better wallet UIs will make this even less likely.

Further, even if these mistakes do happen more often than I expect, I believe that:

  • It will be worth the operational cost for the benefit of our UX (see Motivation above)
  • Delegating “return to sender” authority to the Foundation should make it manageable

If we do set this precedent and authorize the Foundation to “return to sender” it will be important to be explicit that this will not cover people for sending POKT the wrong address, for losing their private keys, or for any other mistake that is not specifically putting the send value in the fee field by accident.

Deliverable(s)

If this proposal passes, the Foundation will execute a DAO transfer to return the mistaken fee to the sender.

Authorizing the Foundation to do this in future cases will be a separate proposal.

Copyright

Copyright and related rights waived via CC0.

Yes.
We give the guy his money back .

Definitely return the funds.

Is there a way to code logic into the system that performs a check to see if the fees/amount don’t seem typical, like having fees be abnormally large in relation to the amount?

This could potentially be done by a tool like POKTscan which is already indexing the chain. The other proposal I’m planning to submit, to authorize returning the funds in future scenarios like this, could be helped a lot by a monitoring system like this for sure.

This proposal is now up for voting! Snapshot