Nytro AMA(2020-02-06)

NyZoSyYesterday at 2:02 AM

Ok everyone, are we ready to start?

Give us 1 min and we begin!

z0rnYesterday at 2:03 AM

:jedi:

NyZoSyYesterday at 2:05 AM

So, I’ll start with a quick status on what we did so far, then I tried to regroup the questions under 3 main categories:

1/ First, current step - base tokens implementation

2/ Second step - wrapped tokens

3/ Further features

It would be great, if you have more questions for 2 and 3, to wait until we are there.

Can you drop some reactions just below I can see you are there?

Great :smile:

So,

Q:: Checkpoint/current status on the ncfp?

What was planned: NCFP-17: [Draft] Tokens on Nyzo


And we followed Jim’s milestone’s suggestion:

First milestone was achieved 1 month day to day after cycle tx passed.

As planned, we provided the protocol, implementation, open source specs, workflows, explorer and API.

:newspaper: Reminder: Have a look at the full paper, recommended read https://github.com/Open-Nyzo/Project-Nytro/blob/main/doc/nytro_protocol.pdf

IyomiscYesterday at 2:10 AM

In addition, we also offered:

  • Helpers to make it easier until all wallets are Nytro enabled.

@Moco expressed interest, desktop and mobile wallet will support Nytro.

  • A faucet, with various test tokens for devs to experiment at will

  • An open source python class (used internally on nyzo.today by the explorer and api) with its doc.

  • Test vectors to support alternate implementations

NyZoSyYesterday at 2:11 AM

I also Nytro enabled Nyzocli, my open source command line Nyzo wallet.


IyomiscYesterday at 2:13 AM

About the different tokens types:

:Q: Why would I use a regular token since mintable seem more powerful?

NyZoSyYesterday at 2:13 AM

Great question :wink:

I’d say: Less can be more!!!

Let remind the differences between token types:


A “regular” token with a fixed supply can be very useful in fact.

The total supply is defined once and for all, at issuance. It will never change.

You don’t have to audit some code to make sure there is no flaw in the contract.

It’s fixed, final, by definition.

So, when you want to issue limited series items, valuable tokens, shares in a joint-venture:

You have all interest in using that “simple” variant, which guarantees the supply, therefore scarcity of your item.

S FYesterday at 2:16 AM

do you take $BAN for funding?

NyZoSyYesterday at 2:17 AM

Funding was already done by the Nyzo Cycle, not sure what you mean @S F

IyomiscYesterday at 2:17 AM

:Q: Why is there no ownership transfer for regular tokens?

NyZoSyYesterday at 2:18 AM

So, this kinda derives from the fixed supply. The issuer of a regular token is just that: an issuer.

As the issuer, he gets the whole supply to start with, but then … has no more rights than anyone else :man_shrugging:

All he has is a balance of the tokens, tokens he can send.

He has no more nor less rights than anyone, why ownership has little sense in that context.

:warning: These are very important questions, and we can not emphasize enough how critical it is to select the right kind of token (and decimals) for your project. Once the token is issued, this is final.

z0rnYesterday at 2:20 AM

well, you could say, you have ownership over the tokens in your wallet, and tranfer that ownership when sent out

IyomiscYesterday at 2:21 AM

Yes, but then we would have to use another word for ownership of mintable tokens

:Q: Can tokenization of assets be done in the future?

NyZoSyYesterday at 2:22 AM

Well, this is the point. Once you have tokens you can tokenize any asset, physical or virtual.

Go ahead - right away - you need nothing more!

:Q: Can Nytro support NFTs?

IyomiscYesterday at 2:23 AM

The proposal made it clear we were implementing fungible tokens. But it depends on what you mean by NFT :wink:

current nytro tokens are ERC-20 like tokens, these are fungible tokens. It means that you can’t differentiate a “TEST1” token from another “TEST1” token.

NFT on ETH are ERC-721. ETH NFTs can embed properties, point to ipfs file storage for instance.

Fully explaining ETH NFTs is out of the scope for this AMA.

However, some uses of NFTs can be handled with regular tokens

NyZoSyYesterday at 2:25 AM

A simple practical example maybe?

MauroYesterday at 2:25 AM

token with a unique ‘DNA’

IyomiscYesterday at 2:26 AM

Say you code a game with in game tokens, tokens representing weapons for instance.

You could issue a “WOOD_SWORD” token with large supply or mintable. This one is easy, cheap to get and does little damage.

Then you issue a “STEEL_SWORD” with a fixed supply of 10. This one does more damage. Nytro guarantees there will be no more than 10 of them, ever. No one can change that, even the issuer.

This token can then be exchanged, sold out of the game as well (otc, or game items marketplace), and gain value.

Then, you can issue an “EXCALIBUR” token, no decimal, 1 unit. This is a unique token, a de facto NFT.

So, we can do some NFT like things. But we can not have full featured and complex NFTs like on Eth.

z0rnYesterday at 2:30 AM

sounds pretty cool tbh, nytro follows exactly nyzo’s roots. it’s so easy i couldnt have imagined something like unique items, because i would have never thought it is that easy^^

IyomiscYesterday at 2:30 AM

The Nytro protocol could be complexified in the future, but the core thing is that Nyzo is not designed to store much data as part of its transactions, which makes assigning and using properties difficult

2 different chains, 2 different limits and strengths.

We think there is already much to do with the current - fungible - tokens.

:Q: Endgame, wildest dream about Nytro?

NyZoSyYesterday at 2:31 AM

Well, I don’t believe in a single “killer” use case for tokens.

Tokens are a very, very versatile tool.

So far, Nyzo was a currency, with fees and micro-payments as main use case.

Nytro brings a whole new class of use cases to Nyzo, while keeping and leveraging Nyzo core strengths and features.

What you can do with fungible tokens on other chains, you can do faster and safer with Nyzo.

So, I’d say this is rather a new weapon for devs to use, than a single killer use case. :bow_and_arrow:

IyomiscYesterday at 2:34 AM

:Q: What can you do with tokens? / Can you give examples of use cases /

NyZoSyYesterday at 2:34 AM

Tokenisation: a token is a “share”. It represents, stands for something (physical or virtual)

It is just more liquid and with a high level of confidence in ownership and transfer, uncopy-able, and only its owner can act upon.

Tokens can represent:

  • a share in a physical product (gold bar, silver coin, physical euros, physical collectible…) :coin:

  • virtual goods (tickets to an event for instance).

This gives nice properties: ticket (token) can be given, exchanged, resold… anonymously, freely, while not having to worry about duplicates…

  • access management (token to use a service)

  • An in-game currency or item, that is transferable to other players (within or outside of the platform - no one can prevent you to swap/sell your token)

  • securities tokens representing shares of a company or decentralized org

  • shares of coop, partnership, joint venture, profit sharing platform where holders get a part of the revenue

  • any type of credits : gift cards you can swap for real goods, reward points, fidelity program…

This is just a quick listing, but the real world use cases really are plenty:

Take some time to reflect on the list above, take them one by one and imagine!

As we’ve seen above, we also have the guaranteed limited supply - hence guaranteed scarcity and value.

There are many things you can do with tokens you just can not with real world items.

Tokens on nyzo also widen the use cases vs tokens on Eth for instance.

One user gave me a real world use case in PM:

Coupons, and specifically drink coupons an organisation gives to its workers.

bartlebyYesterday at 2:39 AM

can i use nyzo for DAO or digital identity _ in a problem space to make decisions?

NyZoSyYesterday at 2:40 AM

The org issues coupons you can trade for a drink.

Tokenize that: coupons can’t be copied, won’t end lost in a washed jean; you can still transfer them to someone else, or pay a coffee to a friend.

Nyzo and its fast blocks mean there is no wait to complete the swap.

Then, close to 0 fees makes it possible to use these tokens for small value things like drinks. Who would pay insane gas fees to a smart contract just to get a coffee?

With Nytro, this is fast and economically profitable for everyone, issuer org as worker.

IyomiscYesterday at 2:40 AM

We will talk about that in part 3

NyZoSyYesterday at 2:41 AM

:Q: Say I want to run a Nytro api or explorer, I’ll need the full Nyzo chain, right? How do I do that?

IyomiscYesterday at 2:42 AM

nytro tokens feed is built from nyzo transactions. So it needs access to the chain history, past the 4 cycles worth of data verifier keep in memory.

But you don’t need to store all the blocks from the beginning of the chain, you only need them from block 10650000 if you want to rebuild everything, or you need the state of the balances at a given block and all the blocks since then.

  • The full chain archive is made available by the devs (it’s used by monk’s verifier for history reconstruction)

ex: http://blocks.nyzo.co/blockFiles/001000.nyzoblock

You can also wire together your own feed and track solution, from archive and tracking verifiers, with pynyzo for instance and feed it to and open nyzo db sql database.

On a side note,

see https://tech.nyzo.co/releaseNotes/v586

Of course, anyone is welcome to host their own seed transaction and consolidated block files, and we encourage the community to set up alternate download sources. Setting up a source of either of these is easy, and it will increase the decentralization of the system. Both URLs are now specified as preferences, so alternate URLs can be used without modifying the source code.

cycle could vote rewards for alternate download locations or operate public historical verifiers/apis.

:Q: Since tokens transactions are for free, are you not afraid to deprive verifiers of the fees?

How will the cycle be sustainable?

NyZoSyYesterday at 2:45 AM

Yep, this is something we addressed in the initial paper


In the light of recent questions and rumblings about nyzo price and dumpers, I’d also like to add something. - my profund and personal belief:

It makes no sense to think of Nyzo as something you only hold and never sell, and point fingers at “dumpers”.

Focusing on the dumpers who “harm the price” is forgetting the other part of the equation: the demand.

The goal of nyzo is to be used.

Once there is a demand (an organic one, not speculative) ,

the sell side becomes secondary and it can become “insanely profitable” as the devs say, to run an in-cycle.

I am really convinced that reaching out to use cases and rewarding devs who go in that direction is a priority.

You can create a temporary hype via so called “marketing”.

If this is only chilling Nyzo to newcomers, so they “invest” hoping to get rich quick, this is just a gimmick.

Use cases on the opposite create a recurrent and constant demand, this is what will drive Nyzo toward a sustainable future.

In that perspective,

tokens on Nyzo are a new tool and lever that apps developers can use to create many, many use cases.

Now, Nyzo is not only a fast micro payment solution. It’s also bacome a fast and very cheap tokens platform, with a whole ecosystem already, and growing.

This just x10 to x100 the potential uses of Nyzo, with strong features vs other solutions.

In that context, the low tokens fees do not appear to be an obstacle.

The pros of the tokens largely balance the cons of cheap tx.

Moreover they will never completely replace core Nyzo transactions.

You will always need Nyzo core currency to buy and sell tokens in the first place, for instance.

(and usual fees do apply on these transactions)

IyomiscYesterday at 2:49 AM

:Q: Is it possible to get a smart contract running with Nytro?

NyZoSyYesterday at 2:50 AM

Nytro is a Token implementation.

A Token interface can be defined by a generic smart contract vm, but does not imply a vm nor smart contracts at all.

These are 2 very different things.

A chain can support a Token implementation while having no smart contract capability.

ERC-20 defines what interface is needed to implement ETH like fungible tokens.

We took inspiration from that interface to bring the same features to Nytro, as a second layer protocol:

Issue a token, transfer balances. Then mint, burn and change ownership for Mintable tokens.

Nytro is a token implementation, not a smart contract nor a virtual machine engine.

Automating tokens operations however is possible but a different thing.

No SC needed also means you don’t have to learn a programming language to use, transfer or trust tokens…

No solidity, easy helpers, soon to be integrated in all wallets, why should it be more complicated?

A few min after launch, we had a first token issued by a user, with no more than the publicly released doc.

This is the proof this just works, out of the box.

IyomiscYesterday at 2:53 AM

:Q: Is a VM Engine present or planned?

NyZoSyYesterday at 2:53 AM

See previous answer, a VM engine is out of the scope of Nytro. Nytro is a Token implementation.

I could give more detail later on on that subject, but since that’s not at core of Nytro, I’ll address the other questions first

Likely, We’ll run a new ama on further extensions in a few weeks.

:Q: How can I automate Tokens operations?

IyomiscYesterday at 2:54 AM

You can use the python token class to get tokens events from an open nyzo db

But automated operations can be done from any language you want to generate tokens or nyzo operations

tokens transaction are regular nyzo transactions, assembled following the rules and forwarded to the cycle

So a simple script can handle that in an automated way, for instance with pynyzo or nyzocli.

Nyzo finality is of great help to build upon:

There are no rollbacks

once a block is frozen you know for sure a given tx passed or needs re-emittance.

NyZoSyYesterday at 2:57 AM

:Q: What would be required for a multi coin wallet like trust to support Nyzo tokens?

IyomiscYesterday at 2:57 AM

On the technological level, Nyzo already has the infrastructure to ease things up.

Ed25519 crypto is available in Java, JS, Python and any other language you can think of.

This is required to locally sign transactions.

Address serialisation format is not standard (id nyzostring instead of header + base58check used by most cryptos) but that is just a minor annoyance.

Nyzo clients are operational (allows for light wallets to get balances, check txs, forward signed transactions to the cycle)

An incentive program could be run to incitate more clients and/or API to be operated as public service

As for tokens specifically, all you need in addition is a light wallet api. nyzo.today provides one, other could as well.

So, we don’t lack anything from a technological pov.

NyZoSyYesterday at 2:59 AM

Now, it all depends on the criteria of the said wallet.

Looking at trust wallet, this would mean including Nyzo (blockchain) first of all.

Apart for the code itself, you can read the requirements here:

https://developer.trustwallet.com/wallet-core/newblockchain#integration-criteria

Most blocking points that do not depend on tech itself are

  • The native coin is listed in the top 30 coins on CoinMarketCap

  • proposal gets approved by voting

  • The native coin is tradable on major exchanges

Then, they have additional criteria for tokens themselve, see

https://developer.trustwallet.com/add_new_asset

  • Project (token, not underlying blockchain) has a website or white paper.

  • Has a social media presence.

  • Detailed Token Information

  • Minimum 2500 token holders and 5,000 transactions (Airdrop tokens excluded**)

They do very strict checks, after notice of abuses to be listed.

tl;dr: Trust wallet is for high profile projects, we’re not there yet.

Maybe other multiwallets are more open.

:bulb: Another option could be to regroup with other similar coins and dev a multiwallet on our own.

In that line of thought, I especially like Angainor’s approach with their hardware wallet aiming at qtrade coins first , rather than the usual high profile coins.

Joining forces with other like minded projects may also work well on marketing and communication angles.

IyomiscYesterday at 3:03 AM

:Q: Is there a way “Walt Wallet” could help?

NyZoSyYesterday at 3:04 AM

I think it’s obvious a hardware wallet can only help. It’s a required and needed brick.

It will be especially needed as offline, cold wallet when we’re at wrapped tokens or for anyone acting as custodial.

Since tokens operations are no more than regular Nyzo transactions, I guess nothing specific needs to be done on the wallet side itself

(maybe some tweaks at confirm time to id tokens vs regular transactions?),

most of the work will be on the related software side (apps calling the hardware wallet).

IyomiscYesterday at 3:05 AM

:Q: How could we help with adoption or something?

NyZoSyYesterday at 3:05 AM

(I take “we” as any nyzo user, not specifically Angainor who asked the question)

Raise awareness, grow user base.

What everyone can do is spread the word, spread nyzos, spread tokens.

Nyzo will not gain traction by being hoarded by a small tribe of vps geeks.

It’s value derives from the cycle diversity.

Cycle diversity depends on the ease of running a verifier (that can be improved) but also on the user base itself, and the variety of the use cases.

As for you @Angainor specifically, I think what you do, working with and on various crypto projects is a great thing.

I’m convinced there are synergies to be found at all levels between many different projects, that are not necessarily fighting in the same class, but all against the same Behemoths,

Go on that way!

You act on the tech side, we would need the same on the marketing side.

If you can think of something simple - from a tech pov - using tokens that could get traction and a wide interest among the general public, please tell!

Not necessarily a “useful” use case, just something shiny that calls for attention.

IyomiscYesterday at 3:07 AM

:Q: What narratives would make Nytro stand out of the crowd?

NyZoSyYesterday at 3:07 AM

We saw recently more and more action on the “marketing” side of nyzo, with valuable NCFPs being worked on.

This gives me hope!

I’m sure we’ll find out together.

We (Iyomisc, I) focus on the dev first of all. We give tools, and will need everyone’s help to showcase them.

IyomiscYesterday at 3:09 AM

If there are no more questions, shall we move on to the second part?

z0rnYesterday at 3:09 AM

its still the first part? you guys rock :smile:

so much info to absorb

NyZoSyYesterday at 3:09 AM


We had so much interesting questions!

We’ll answer further questions later on anyway.

We’ll go faster by now, we already spent more time than planned :slight_smile:

IyomiscYesterday at 3:10 AM

:Q: The ncfp17 states wrapped ETH and BTC. Can you explain how this would work in practice?

NyZoSyYesterday at 3:11 AM

Ok, I’ll try to make it short and maybe we’ll do a second AMA once we are closer to the second step.

I suppose you have some idea of what wrapped tokens are.

There are wrapped tokens everywhere; wBTC on eth chain, all kind of tokens wrapped on VITE chain and other DEX, native coins wrapped on ETH to be listed on Uniswap aso…

What almost have in common, even if they do not state it clearly, is that they are custodial.

There is a central entity that has keys to both the native coins and the matching, wrapped token (or just one of them, nvm).

I want to make it clear, that the two things - wrapped tokens on one side and decentralized, trustless wrap on the other side - are clearly distinct.

The wrapped tokens we can - and will - do. The other thing no one does in a safe way for now

IyomiscYesterday at 3:13 AM

:Q: How would wrapped ETH on Nyzo work for instance?

NyZoSyYesterday at 3:13 AM

SETUP:

  • A custodian creates an ETH contract, a Mintable Nytro token (say NETH) and a nyzo bot

USAGE:

  • You send ETH to the ETH contract, with your nyzo address as a parameter (ETH gas fees)

  • The nyzo bot polls the eth chain, sees your ETH transaction, mints and sends you NETH on the Nyzo chain

  • You do what you want on Nyzo chain - fast and feeless - with your NETH

  • You can send back your NETH to the custodian. (Here, we’ll need an added step to provide the target ETH address, several workflows are possible)

  • The custodian sends the ETH to your ETH address, and burns the NETH you sent him

In that process, eventhough the process is not entirely decentralized or trustless - because of the custodian - we have some safeguard:

We can check anytime that the NETH supply is equal to the ETH wallet of the custodial.

There are records, on both chains, the service did what it was supposed to do.

Please note the custodian/gateway requirement is not a specific Nyzo limit: this is how things happen all the time on many other chains and DEX already, with no one objecting.

There are also ways to spread the potential risks:

You can have several custodians, several services. With time, every service grows a reputation.

Service could also be backed up by some collateral they would freeze (raises other questions)

To address this and see how things can work and what obstacle we may have miss,

I think we’ll experiment with capped capacity first (amount as duration) and see how it goes in a first step.

An important research area also is threshold signatures. (m of n).

This could limit or spread the risk in some situations.

However, given the complexity of related crypto plus Nyzo specific ed25519 scheme, this is not an easy task.

There are important constraints.

IyomiscYesterday at 3:16 AM

:Q: wNyzo on ETH and relationship with Nytro?

NyZoSyYesterday at 3:16 AM

I’m aware there are several devs working on wNyzo, an ETH token wrapping Nyzo.

Nytro is not concerned there, only Nyzo.

However, the concerns are very close to the other way around:

They mainly revolve around operational security, risk management, custodian and potential legal issues.

These things are often ignored, they can be up to a certain point, but when you grow large enough they become critical,

so as well try to address the painful questions from the start.

Any move on the wNyzo front will also benefit NETH, and vice versa.

We’ll say more and give more practical info about wrapped tokens once we are ready to practically move with that step.

Any quick questions about wrapped tokens until we move to the last part?



:Q: “I would like to be able to build a DAO on nyzo, a democratic cooperative that enables joint ventures for the stakeholders”

IyomiscYesterday at 3:20 AM

Nytro tokens -like erc 20 tokens- can act like shares, so you can be sure of who is part of the organisation, and then a vote system can be implemented.

Since a token based vote system is important, I think there should be a common protocol, that we might add later.

:Q: Will you collaborate with Nyzo devs for further dev?

NyZoSyYesterday at 3:21 AM

Not sure I understand the question.

Nytro does not need any change to Nyzo consensus. It’s a layer 2 protocol.

Nyzo chain itself is permissionless: anyone can use the chain and send transactions with the data they want.

There is no competition nor constraint, nothing that would raise any worry about “cooperation”.

All devs working on Nyzo do it to foster adoption, awareness, practical use of Nyzo.

Whole history of Nyzo is about cooperation and trust in the diversity and carefulness of the cycle.

We are of course open to any cooperation of any kind, with anyone, this goes without saying.

IyomiscYesterday at 3:22 AM

:Q: Is there a 2021 roadmap for Nyzo / Nytro?

NyZoSyYesterday at 3:22 AM

We can’t speak for Nyzo founders; imho they made it clear they want the project to be handled as much by the community as by them.

They seem to focus on the micro-payment use case and related tools - browser extension, mobile app - first of all.

Nothing directly related to the newborn Nytro, but this is something anyone can help with.

I’m always surprised to see no one build a micropay enabled website, or used angainor’s wp plugin.

As for Nytro roadmap, we are at step 1 only, from the 3 NCFP steps.

There is much to do, but not all is a technical task to be done by “the devs”.

Crowd support, fans, users relaying, using, playing with all the tools that are provided is essential.

Nyzo and Nytro are meant to be known and used, and this is everyone’s task, not just the founders’ or some devs.

Roughly, Nytro roadmap is :

  • make sure step 1 is understood and used first of all: apps making use of the current tokens implementation.

There are really many. The more the use cases and the users, the more Nyzo power and advantages will shine.

We will help anyone with a use case and integration questions.

  • Move toward step2 of the ncfp: wrapped tokens

  • Develop more complex use cases, including Defi features like bonding curves, automatic market makers :fire:

  • Continue to research and develop use cases, foster adoption.

IyomiscYesterday at 3:25 AM

:Q: ED25519 Threshold sigs?

NyZoSyYesterday at 3:26 AM

Yep, listing them here as a reminder.

This could become a critical and required feature, not only for Nytro but for Nyzo.

As could be atomic swaps for instance.

This is not Nytro specific, more a call for crypto geniuses out there that would hear us :wink:

IyomiscYesterday at 3:26 AM

:Q: Stable coin?

NyZoSyYesterday at 3:26 AM

Out of time to develop that for now. Keeping that one for a future AMA, many things to say

IyomiscYesterday at 3:27 AM

:Q: Do you have anything planned yourself to increase the use of Nyzo tokens?

NyZoSyYesterday at 3:27 AM

I hope I (we) are not, will not be the only ones to work on use cases.

There is only so much we can do. Anyone has a role to play, we are not gods :zap: , just devs helping as they can with what they know.

And we don’t know all, we can’t do everything.

However there’s a use case we’d like to present soon, that is in the Defi mood.

We didn’t want to expose it too soon, because we truly believe there are many things already to be done with “simple” tokens.

That project uses “regular” tokens, with fixed supply and bonding curves.

Basically, this will allow to swap Nyzo for a Token (and token back to Nyzo), right from your wallet.

  • No exchange needed

  • Automatic market maker

  • Buy and sell price is fixed by the curve, and is function of the released supply.

  • Various curves can be used to fit different scenarios.

We will give some pointers and tell more later on!

IyomiscYesterday at 3:31 AM

It’s also possible to do some kind of casino using tokens: you send nyzos to the casino bank, which will send you back an amount of tokens corresponding to what you sent, and then you can play all sorts of casino games using these tokens, and you can convert them back to nyzos whenever you want, just by sending them to the casino bank.

This usecase is pretty simple, but is really useful since the casino can have a lot of different games that can be played with the same tokens.

In this usecase, tokens are useful because once your nyzo are converted into the casino tokens, you don’t have to pay the nyzo fees each time you send a transaction, which you do a lot when you play.

NyZoSyYesterday at 3:32 AM

Agreed. “Simple” use cases are not to be discarded.

Duck hunt, flip coin aso can get real traction.

Maybe a quick hackathon, themed around “casino games” could bring many small apps using tokens already

No rocket science, just integrating tokens in nice looking addictive games (and be rich quick of course)

Ok, I think we addressed most of the question we had.

Do not hesitate to ask more or reformulate your questions.

We plan to do a second AMA on wrapped tokens and/or bonded curves in a week or two, but we also hope to see some use case in the mean time.

I’d like to thank you all for your questions and involvment

Thanks z0rn and Gigison for helping behind the scene

z0rn is the man behind the Nytro name and graphic btw :wink:

z0rnYesterday at 3:38 AM

we have to thank you. this AMA was insanely informative. :pepecool: well prepared and executed

1 Like