SNS: How to send tokens mistakenly sent to our ledger canister (x4kx5-ziaaa-aaaaq-aabeq-cai)

A user has notified us that he accidentally sent 99’664 DCD tokens to our ledger canister directly instead of ICPSwap.

Here is the transaction:

https://dashboard.internetcomputer.org/sns/x4kx5-ziaaa-aaaaq-aabeq-cai/transaction/117497

He has also posted here in the forum:

We are looking for guidance on how to initiate a transfer from the Ledger canister to this users wallet.

Thanks

Hi @modclub,

Unfortunately, there doesn’t seem to be a built-in way for an SNS to refund tokens that were sent to the wrong account. (This isn’t a bug in the SNS, nor is it a problem of the Ledger canister, as one could accidentally send tokens to any account, it just happens to be the Ledger canister’s main subaccount in this case.)

As a mitigation, Modclub SNS could consider minting the amount that got stuck in this transaction, with the destination account set to the mistaken transaction’s source (t4xcb-dvxfo-3yd2n-kggbq-so5a7-tkwtu-o6z6e-eie6v-vaygy-vrnlz-7qe). You would need to make a MintSnsTokens proposal for this.

If you go this route, it would require the affected user to reveal their principal and sub-account ID. This information is needed for submitting a minting proposal. This information is opaque from the above transaction, but the above transaction could be used to verify that a given principal / sub-account ID are encoded into an account ID that matches the expected source (see above). To perform this verification, the SNS community could use the following DFX command:

dfx ledger account-id --of-principal $USER_PRINCIPAL --subaccount $USER_SUB_ACCOUNT

where $USER_PRINCIPAL and $USER_SUB_ACCOUNT are substituted with the information the user provides to you (please don’t submit an SNS proposal until you yourself check if this information actually checks out; there could be an attack in which someone tries to claim another user’s stuck tokens).

In you decide to go this route, I highly recommend adding CLI command and the verification instructions into the minting proposals’ summary section.

Please note that this mitigation would increase the total supply of DCD tokens. If my calculations are right, the increase would be ca. 0.01%.

@aterga Thanks for the very detailed answer.

So currently there are two avenues:

  1. Mint new tokens: Creating new tokens to reimburse the lost amount would increase the overall token supply, affecting all current token holders by diluting the value of their holdings.
  2. Transfer from the treasury: Approving a treasury proposal to reimburse lost tokens could set a problematic precedent. It might encourage future requests for similar privileges in cases of lost or mistakenly sent tokens, which could be unsustainable and potentially open to abuse.

We agree that what occured is not a bug and just how blockchain ledgers work. If a transaction is sent to the wrong address on any other chain it’s usually unrecoverable.

@Metini Please see the above information. At this point we don’t see a path moving forward.

1 Like

@modclub @aterga thank you to both for such detailed responses. @modclub your last sentence where you say you dont see a path forward, i dont quite understand, aterga pointed out that there is a path forward, I guess what you are trying to say is that you dont want to utilise the options that aterga provided.

I understand that mistakes like this should not happen, but being a novice investor, and not being great with tech, I made a simple mistake, which i take accountability for. However this is not a small amount of money, and I am requesting a gesture of good will for someone that has supported the token and is a long term investor of ICP.

Maybe this is wrong, but the way i see it, because I sent 99664 DCD tokens to the Governance Canister, does that not mean i have increased the total supply? If we submit a proposal (as suggested by aterga, then wouldnt we just be removing the extra supply that was added?

This has been a very stressful situation for me, the amount in question is not a small amount and i am requesting that we follow atergas suggestion to submit a proposal to mint the amount that was added in error.

Thanks and looking forward to hearing from you.

Hi @Metini,

Please note, in the context of the above-mentioned transaction, neither I nor DFINITY are suggesting any specific actions for DecideAI DAO. I’ve outlined a potential scenario, and some important details that I think are worth considering. Only the DAO itself can decide what and when to do regarding the issue.

That being said, I do empathize with your situation, and I intend to provide assistance on how to implement one of the scenarios, if it comes to that.

because I sent 99664 DCD tokens to the Governance Canister, does that not mean i have increased the total supply?

No, your transaction did not change the supply. The above-mentioned increase would happen in a scenario in which the SNS would mint new tokens to compensate you.

Hi @aterga,

Thank you for explaining, I didnt intend to suggest that we must take one of the options you suggested, my apologies if it came across that way. I am hopeful for a resolution and will await @modclub to respond.

Thank you again and good day to you.

Hi @metini,

We really sympathize with your situation, this is one of the perils of self-custody. If there was a way for the SNS to refund the tokens that were sent to the wrong account, we would have assisted you in that.

We don’t feel comfortable creating proposals to minting new tokens or transferring from the treasury as this really is not an issue related to the team.

You can create a Motion proposal to ask the DAO to mint you new tokens and see what the community decides.

Hi @modclub thank you for your response.

I am not very technical as i have explained previously, so forgive me for not quite understanding how this can happen in the first place. If the governance canister is not meant to have tokens sent it as it is not retrievable, then why is there not a safe guard mechanism in place to stop non tech savvy end users like myself from making, what i consider, to be a rookie mistake, because i am a rooky.

The part i really dont get it where are those tokens now? Surely the tokens i sent are there as extra tokens, what am i missing here?

I mean, the tokens were not sent out to an obscure random address out in the never never world of crypto, it was sent on the NNS, from a DCD wallet, to a DCD governance canister. There are extra tokens sitting there that were not there prior to my mistake.

So are we really saying that those tokens are lost now and i cannot ever get them back? I mean if it was a small amount, i truly would not bother anyone, but this is not a small amount.

So how do i go about creating a motion to either mint new tokens (which i still dont understand why, because there are extra tokens there) or request treasury to reimburse the tokens (because again, there are extra tokens there).

At this point, i am ready to try anything, but as a long term ICP investor, this has really dented my confidence in the ICP network, maybe my lack of understanding how all this works plays a role in that, however there really should be safeguard mechanisms in place when this sort of thing happens.

If there are canisters that people should not be sending tokens to, then there should be a block and the transaction should not be allowed to go through.

Thank you again for your patience in hearing me out, and i truly hope we can come together and find a resolution. If i create a proposal, will you support that proposal?

Just a small correction on your post, if i’m not mistaking it’s not possible to send SNS native tokens to a governance canister. I think you mentioned sending them to the ledger canister?

Regarding the tokens, they are locked up because the ledger now owns them and there is no way to transfer them on behalf of the ledger. In more simple wording, there are x amount of tokens in circulation and you gave ownership of your tokens to somebody else, in this case the ledger, so there are no extra tokens you are referring to.

you can see your tokens here and setting xsi2v-cyaaa-aaaaq-aabfq-cai in the owner principal field.

If you would mint new tokens they get added to the total supply which will lower the value of each token in circulation.

If you want to create a motion proposal or mint proposal in a less technical way, you could do this through the toolkit. You would need to login and add a eligible neuron to make the proposal.

1 Like

@RMCS That actually makes sense the way you put it, so i get it now, i have given ownership over to the governance or ledger canister (if i am not mistaken, DCD support in Openchat advised me that it was the governance canister, thats why i have been using that term, maybe its the ledger, i dont know).

So, if i have handed over ownership of x number of tokens to the ledger, it would mean that they have ownership over tokens they have not made a transaction for, so could i not request ownership back. Sorry i do get what you are saying regarding the ownership, but i dont get why there would need to be a minting of new tokens. Surely the tokens i sent are there and thats what i want to request back.

The link for the toolkit i just dont get, i am not technical, so i would have no clue how to actually go about submitting such a proposal. @modclub mentioned that submitting a request to treasury would create a dangerous precedent, but i just dont see it that way (perhaps my stressed out bias).

@RMCS what would you suggest, any guidance is welcome and appreciated.

Yes transferred them to the ledger, if it was the governance canister this issue would be easy to solve.

I think the more we go in depth the harder it becomes to understand the issue, but you transferred them to an other entity and you just can’t “steal” them back, you “signed” that they were transferred to the ledger and the ledger (entity) owns those tokens now. The fact that they are unusable doesnt mean they do not exist. So if you want tokens, new ones need to be minted.

The toolkit is there so its easier for non technical people to participate in governance, the fact about the dangerous precedent is a different aspect to this, i just point you to one of the options that was mentioned by modclub.

looking at the below image makes it pretty self explanatory on how to do it.

Last option would be that dfinity updates the ledger canister code to enable for the transfer but i dont think something like that is going to happen.

Actions have consequences, and in case of transactions, i personally always send a small amount before such a large sum to prevent these scenarios

@RMCS thank you for taking the time to explain, I get what you are saying, I dont want to go around in circles, I am sure you guys are very busy and I genuinely appreciate you taking time to respond and explain.

About sending small amounts first - I was looking to swap the tokens on icpswap, on the network of icp, i would have thought it is ok to do so, i would have never imagined that tokens could be sent to a know address on the network and then to be told it is not recoverable.

I will use the toolkit and see if i can navigate a way to submit the motion or proposal, to mint new tokens and see how that goes.

On the screen shot you sent through, if you look on the top right, the default neuron, should that be the neuron i have with my DCD tokens staked in order to pay for the proposal? when i go through the steps to add the hot key, should i be adding the one that is displayed to my neuron, as in the image below?

I really appreciate everyones help on this.

@aterga @RMCS @modclub I have prepared the proposal to mint additional tokens, but when i press Review and Submit, nothing happens. is there something i am missing here.

Refreshing should do the trick, the toolkit is still in a beta stage so there are still some small issues like this.

That said, not everybody is aware of this thread / the issue you have, so i would extend a bit more on the summary with a explanation what happened and why you created the request, also with a link where people can verify what you are saying is true.

As for the fields, the to is where you want to send it to (nns principal for example), the subaccount can be empty as it is optional and the amount is self explanatory.

but looking at the previous proposals it seems that you already did an attempt requesting ICP that got rejected here?

Thanks, I will keep trying. Sorry dumb question, when you say put a link where people can verify the transaction, I am guessing that is the transaction link…

To explain the one that was rejected, when this first happened, i was chatting to the DCD support on Open chat, they explained that i would need to submit a proposal and someone on this forum suggested i use the Juno platform for ease of use. I went ahead and used the platform to submit, only to be told later that it is not correct, which meant it needed to be rejected because the DCD team voted against it, which tipped it to rejection right away. In my angst, i feel i jumped the gun to submit that without discussing with people like yourself.

Thanks again for the info, i will add the transaction link as suggested for people to verify, i will also add more meat to the story and try submitting again. You have been so helpful, and i appreciate it mate.

@modclub i managed to submit the proposal to mint new tokens, @RMCS thank you for your guidance on using the toolkit. Fingers crossed for a favourable outcome by the community.

1 Like