StrataFoundation / strata

Strata Protocol is an open-source protocol to launch tokens around a person, project, idea, or collective on Solana.
https://docs.strataprotocol.com
Other
101 stars 99 forks source link

Reasons for Discontinuance #367

Closed caramboleyo closed 10 months ago

caramboleyo commented 11 months ago

May I ask why it was discontinued?

ChewingGlass commented 10 months ago

Yep, blog post here (the site has since been taken down) https://github.com/StrataFoundation/strata/blob/master/packages/docs/blog/2022-11-2-helium-acquisition/index.md

caramboleyo commented 10 months ago

Thanks, would have been nice if you had returned the tokens before shutting down.

ChewingGlass commented 9 months ago

Returned what tokens? All tokens are either (a) in bonding curves which still function or (b) were returned here https://github.com/StrataFoundation/strata/blob/master/packages/docs/blog/2022-1-19-wumbo-beta-open-dist/index.mdx and here https://github.com/StrataFoundation/strata/blob/master/packages/docs/blog/2022-08-25-sunsetting-wumbo/index.mdx

Users of Wumbo had almost a year to exchange social tokens and OPEN for SOL before the blog site was taken down, and the tokens are still in the contracts (now immutable) so they can claim them at any later point.

caramboleyo commented 9 months ago

Whats bondingcurve? Whats wumbo? i used strata homepage i think launchpad or something and now tokens are here: https://solscan.io/account/GLq5gk4EKGXm5sKqst8MqW9iJsuM4zGAE65sNv59RWq3

ChewingGlass commented 9 months ago

That's the address of a fungible entangler. Assuming you hold the wallet HwYygM56SzHtWTM3GquLjB5qQirFHctrDEeqhd3NJzzn, you can close it out and get the funds back:

https://github.com/StrataFoundation/strata/blob/master/programs/fungible-entangler/src/instructions/close_fungible_parent_entangler_v0.rs https://github.com/StrataFoundation/strata/blob/master/programs/fungible-entangler/src/instructions/close_fungible_child_entangler_v0.rs

Example SDK usage here: https://github.com/StrataFoundation/strata/blob/master/tests/fungible-entangler.ts

The contract is immutable and that wallet holds the authority, meaning I can't do this for you.

caramboleyo commented 9 months ago

After two days in dependency hell and back to old require style i got it working:

const anchor = require("@project-serum/anchor");
const { FungibleEntangler } = require("../packages/fungible-entangler/lib/cjs");
const { PublicKey } = require("@solana/web3.js");

anchor.setProvider(anchor.AnchorProvider.local('https://api.mainnet-beta.solana.com'));
var provider = anchor.getProvider();
var program = anchor.workspace.FungibleEntangler;
var fungibleEntanglerProgram = new FungibleEntangler(provider, program);

async function transferAndClose() {
    await fungibleEntanglerProgram.transfer({
        parentEntangler: new PublicKey('GLq5gk4EKGXm5sKqst8MqW9iJsuM4zGAE65sNv59RWq3'),
        amount: 10000000,
    });
    await fungibleEntanglerProgram.close({
        childEntangler: new PublicKey('HK1vum4KFizCSV9ACcdFDxF3tqQbyZNxMW6q2KXwT49V'),
    });
    await fungibleEntanglerProgram.close({
        parentEntangler: new PublicKey('GLq5gk4EKGXm5sKqst8MqW9iJsuM4zGAE65sNv59RWq3'),
    });
}
transferAndClose();

The needed addresses i got from the initital transaction: https://solscan.io/tx/3rPdWHW7FRFq4vhGGGx2XGgmPzL7mTGq9xB7JvawewyZNcuK1PeHLfkqhU1SshsVzMiz816Mb4gsCSzDAwKxLSXD

I understand now why there are so many blockchains. Working with this is hell. I guess anyone wants to create something easier to work with (me now too ;-P) The result is only 20 lines, but what it took me to get there!

caramboleyo commented 9 months ago

I seemed to have tried to create a coin with strata some while ago: https://solscan.io/token/FD8i2pkWqPFHKMuLLyvHJ6YL5p9JuNj1CGdrR19s3pBn#txs

the setup is very entangled and i do not seem to have the authority over the token. It created a separate account that has TBondmkCYxaPCKG4CHYfVTcwQ8on31xnJrPzk8F8WsS as owner for metaplex it set 1118dzdRSxAgSHL3KB315EEwH7fvL1cHsDBneX3YfU8 as updateAuthority and hAY8haPeaE8xvUi9rnUj3gG6kdDb1NXuWzVGruWue3h as mint.

there seems to be a createMetadata happening in the bonding stuff, how was it supposed to be updated? (i am just looking for a way to rename the coin, and change description and image so it wont be confused with the real one later)

i guess everything was supposed to run through your program?

ChewingGlass commented 9 months ago

The token sale setup was an amalgamation of two different smart contracts -- the bonding curve and the fungible entangler.

The issue is that a bonding curve takes tokens into a treasury on one side, then mints new tokens on the other. It has great pricing mechanics, but it has to control the mint authority. That's not always ideal.

The way we fixed this was by having the output token of a bonding curve be a kind of shadow token. It's not used for anything but to exchange for the real token in the fungible entangler.

It's a bit complicated, yes. But I wouldn't worry about tokens with the same name. People will create spam tokens with the same name of your token, it's unavoidable.

The bonding curve has a reserveAuthority on it which is allowed to claim the entire reserves of the bonding curve. The fungible entangler has a similar authority.

https://github.com/StrataFoundation/strata/blob/master/packages/marketplace-sdk/src/index.ts#L429

You may find this code useful for disbursing and closing both.

ChewingGlass commented 9 months ago

Whoever created the token should be the authority on the token metadata