Smart Assets Proposal

Everyone can benefit from that don’t need a specific usecase. we will not know until the needs are satisfied with this feature.

Apis is currently using a second token to lock up assets for a year on their hives waiting for smart assets.

The current implementation allows setting scripts to smart assets only. It means that if an asset was issued without a script then a script cannot be added later. To create an asset that behaves as non-scripted but can be upgraded later, it’s suggested to issue an asset with the script ‘true’.
Do you think that the ability to add scripts to existing assets (that are currently in use and don’t have scripts) is necessary?

Yeah great for Banking to come in must be easy for them to understand but it’s a must fiat will flow if we get Banks to commit.

Ok, i see a very frustrating thing here: spam tokens which you cannot control at all.

Nowadays you can burn or send not needed tokens away, but with smart assets it is possible to create an absolutely immovable tokens and spam them as before.

This changes the paradigm as you can’t protect your account from that.

I do not like this feature alone without some restrict mechanism against it.

1 Like

Even now you can’t actually control spam tokens. You just make it invisible. You will be able put the spam tokens in spam box even if they issiued with smart assets.
I never burned a spam token they are all in spam box. Spam box is just a filter. There are many way to avoid from spams, the client can be redisgn to show only tokens that you want to see in your wallet. Also transactions only for specific tokens that you want to see on desktop wallet. You guys have a lack of imagination against problems. And really make me dissapoint in this project. Free your mind and start to think what we can do with Smart assets.

It is not a trivial UI question.

The question is in the paradigm, that you can control anything with your private key in your account. You can even block yourself with smart account script. But it is your choice.

Now you telling me that there will be tokens that I can’t do anything with. It is frustrating.

I am saying you can’t do anything now too :slight_smile: except using a filter that can make them invisible. Burning like sending the spam tokens to one account that you don’t know the seed. :slight_smile: So the spammer can keep send the tokens that you burned. I didn’t check the smart assets fully but there could be a feature for accounts to reject payment for a specific token.
or blacklist issiuer or whitelist issiuer or white and blacklist tokens etc… There could be much more… Actually don’t have much time to check smart contracts and learn syntax so this is just the potential that can be add easily to avoid from spammer. Those are the way to block spammers from decentralize way. But a filter on desktop wallet like I mentioned can solve it easily. But I guess they don’t want to make it from centralized way.

BTW, can we issue a token that can be reissue by different accounts who is attached with multi-sign script.

@karmenali, sorry, but you’re wrong almost in everything you say, read docs first.

As for filters. Technically, API calls still delivers full information about account and all assets, if you do not see spam, it does not dissaper. It is present in every call. For example, try to check assets on these accounts:

Even if you filter it on a post processing, measure the time you need to load the page.

You really didn’t get what I am saying. That’s true explorer get full information about accounts. But they can change it easily with a filter to show only basic tokens. E.g waves explorer shows only 100 tx , wavesdex shows 300tx and exchange txs in different tab. That’s all up to developers. If waves team don’t want to show X token on your account they can do it easily in both explorer , desktop wallet, telegram bot etc… So, smart assets can’t change your api call to make token visible in every api call :slight_smile: If there is such a power like that, waves should be 10k usd :slight_smile:
if account == ‘valid’:
print(wavesBalance, wctBalance, …) #what do you want to display on screen

Now you telling me, what if there was a server side mechanism to filter valid tokens it wouldn’t be the problem. Please see my first post, i did started with that.

For now, all filtering takes place on a client side.

So i completly support smart assets if i can filter them on the blockchain, not on a client.

But such a paired with smart assets but limiting mechanism has not yet been provided.

Here is your argument. And I support that burning tokens can’t be a solution. If all your concern about spam tokens here some solutions;

  • Build your own filter which is easy way to do.
  • Offer to the team to create such a mechanism with SC to attache a script to your account. That script should work like that : define a whitelist tokens id. if the token id is not in whitelist burn it - don’t except payment etc…

For now you can’t filter any token on the blockchain. The issiuer sending you an input and if filled the requirements on blockchain he can send you anything that he wants. We need a new feature in smart contract to make such a mechanism to able burn or if it is possible to not except this tokens. Maybe we need to wait turing complete. But as I said you can’t act like a issiuer on blockchain if you don’t have a permission to control the account. Only can describe your own rule for your own account.
One more, we can change the all rules and make the tokens non-transferable from the beginning and build a new voting mechanism similar to DAO and if the token pass the vote step with at least %51 support, turn it transferable.

The issuer is able to issue an asset and add a script to their account with the following logic:

anyone can sign a ReissueTransaction for this asset and transfer the asset from the issuer’s account (the issuer’s account becomes something kinda faucet: ). So the issuer can specify that these transactions can be signed by accounts from a whitelist or even anyone.

Still, the asset’s issuer has to be the sender of the ReissueTransaction, so we’re sure that all this logic is on their consent. The reissued tokens will be generated on the issuer’s account.

Hey. We are developing a fintech project on the waves. We are very interested in implementing a smart contract in your project. The idea is that a smart contract should act as an insurance (insurance wallet) for our clients in case we do not fulfill our obligations. Example: A client purchased a contract for 3 months from us for our tokens. After the expiration of the contract within a certain period we must return to him the amount of the contract with the bonus! If we did not do this, the Client should receive a 100% return of the tokens for the Insurance, if he insured his contract! If there is no insurance, then he gets nothing! If we paid him everything (at least his contribution), then he should not get insurance either!
The question is whether it is feasible at this stage on the platform?

Hi @moleg42 ,
I think you can do this:

Issue “insured tokens” (that is, you will sell two types of tokens: contract-tokens and insured-contract-tokens). The cost of insurance is included in the cost of the insured-token and is additionally specified in the wallet script.

Set a script to the wallet-account with the following logic:

allow ExchangeTtransactions that satisfy the following conditions:
1) the proofs contain the ID of the insured-token purchase transaction
2) Asset pair is the same as in the purchase transaction
3) the price is the same as in the purchase (minus the price of the insurance itself)
4) height > height after 3 months from the time of purchase (or some other condition)
other transactions have to be signed by the wallet account.

It is implied that you’re gonna buy insured-tokens from a client at a price not lower than the purchase price: you create an ExchangeTtransaction, the client signs an order (if everything suits them), you sign the second order and the whole transaction and put it in the blockchain. If you do not do this, then after a certain time the client is able to create an ExchangeTtransaction according to the rules described in the script, and put it in the blockchain - that is, the client is able to return the money for which this token was bought.

The insured-token, if desired, can be made a smart asset, for example, transferring to third parties can be prohibited.

To prevent double-spending you should also ask a client to send a DataTransaction beforehand to your account with (key, value) = (purchaseTransactionId, sellOrderId) and prohibit setting DataTransactions with identical keys.

Спасибо Дмитрий за ответ. Мне надо еще его осмыслить. Так как разработчики и пользователи не всегда говорят на одном языке.

Here’s a description of implemented smart assets’ features that will be included to the next release:

Thanks for great features! I really appreciate it.