Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Community Call - Nov 26th, 10am PST - EVM Evolution #14

Closed
bmann opened this issue Nov 7, 2018 · 19 comments
Closed

Community Call - Nov 26th, 10am PST - EVM Evolution #14

bmann opened this issue Nov 7, 2018 · 19 comments
Assignees
Labels
evmevolution EVM Evolution

Comments

@bmann
Copy link
Member

bmann commented Nov 7, 2018

A kick off call with as many EVM and client maintainers that want to talk about improving the EVM. Date Nov 26th, 10am PST.

Please add topics and questions for discussion below, and use reactions to indicate which ones you like.

@bmann
Copy link
Member Author

bmann commented Nov 7, 2018

Overview of EVM Evolution from SPADE team -- Greg, Brooke, Boris.

Resources:

@bmann
Copy link
Member Author

bmann commented Nov 13, 2018

Using LLVM as a path to more language support

ethereum system diagrams

Related discussion in the ETH 1.x thread on EthMagicians with @fubuloubu

@bmann bmann changed the title Community Call - Date TBD Week of Nov 26th - EVM Evolution Community Call - Nov 23rd, 10am PST - EVM Evolution Nov 13, 2018
@bmann bmann changed the title Community Call - Nov 23rd, 10am PST - EVM Evolution Community Call - Nov 26th, 10am PST - EVM Evolution Nov 13, 2018
@liangdzou
Copy link

I would like to attend the meeting very much, but it is too late for me (2am Beijing time). It would be much better if the time can change a little. Though, it is ok if it is too hard.

@bmann
Copy link
Member Author

bmann commented Nov 20, 2018

@liangdzou hello! Thank you for being interested. Right now I would like to keep this call at the same time and then schedule the next call to work better for Beijing time.

We will take notes.

Can you share what you are interested in, what you are working on?

Sent with GitHawk

@liangdzou
Copy link

I am working in Qihoo 360 blockchain developing lab.

Currently, I am interested in improving the TPS of a blockchain, including sharding, smart contracts parallelization, SIMD, etc. I am also interested in multiple language support for writing smart contracts. But I think it would be better if TPS can be improved as well when support for the new languages.

By the way, do you guys have any examples where SIMD is required? I think those classical crypto algorithms are not appropriate examples because those can be implemented as system contracts/library/instructions. The example should show that the requirement is somehow not predictable and hence cannot be implemented before the chain is developed.

@expede
Copy link
Member

expede commented Nov 21, 2018

Hi @liangdzou 👋

because those can be implemented as system contracts/library/instructions

Strictly speaking, any Turing-complete language (including Solidity and Vyper) can implement any possible program — ie: SIMD is for performance improvement. SIMD on Ethereum is not uncontroversial, but the main motivating case is being able to implement certain cryptographic algorithms and stay within Ethereum's gas limit (and not need to push them all down into specialized EVM opcodes / "precompiles", though I personally like that approach in general). They need to be predictable, since determinism at the application layer is desired.

cannot be implemented before the chain is developed.

Could you explain a bit more? Do you mean off of the application layer?

I am also interested in multiple language support for writing smart contracts. But I think it would be better if TPS can be improved as well when support for the new languages.

Amazing! From what I've seen, the application layer is almost never the TPS bottleneck for a blockchain system. The bigger issues are networking, mining, consensus, and hard logical synchronization.

RE languages and semantics: if I were to write a programmable blockchain from scratch, I personally would probably do things a bit differently from Ethereum (depending on the constraints of the system, of course). For one, I'd give the grammar much richer semantics, so it can be more easily (and deeply) statically analyzed. Secondly, I wouldn't provide full Turing-completeness, since we don't want contracts to run forever, and it introduces the halting problem and thus sacrificing totality.

smart contracts parallelization

In case you haven't seen it, I'd check out Formality, which has a number of interesting properties, including easy/automatic parallelism.

@liangdzou
Copy link

cannot be implemented before the chain is developed.

Could you explain a bit more? Do you mean off of the application layer?

If there are examples to show that the requirement of SIMD or multiple threads widely exists, not only for those countable crypto algorithms, then EVM has to define related features (SIMD, SIMT, VLIW, etc) in its opcodes. Otherwise, predefine them as system contract with const address (such as sha3) may be the best way. I can imagine that money transfer in ERC20 requires one memory read and two memory write. Those two memory writes can be running in parallel, and hence SIMD can be useful. But, this example may not be able to gain too much because that two writes will not be able to implemented by low-level SIMD instructions since the addresses used are both 256bits (creating new threads/corutines is also not appropriate since the execution is so short). So, I wish to hear some more convincible examples.

I am also interested in multiple language support for writing smart contracts. But I think it would be better if TPS can be improved as well when support for the new languages.

Amazing! From what I've seen, the application layer is almost never the TPS bottleneck for a blockchain system. The bigger issues are networking, mining, consensus, and hard logical synchronization.

Yeah, this is the most of the case. But if one applies blockchain in private chain, consensus and network will not cost as much as public blockchains. In such case, TPS will be important.

In such case, the requirement for deterministic of smart contracts makes the things so complicated. One must carefully select the libraries that can be used widely in C++ and so on, deal with uninitialised variables, data race, ...

smart contracts parallelization

In case you haven't seen it, I'd check out Formality, which has a number of interesting properties, including easy/automatic parallelism.

This functional programming approach should be able to deal with data race very well. But, it will be a little hard for normal developers to use, I think...

@bmann
Copy link
Member Author

bmann commented Nov 26, 2018

Zoom link https://zoom.us/j/715268638 for 10am PST

@gcolvin
Copy link

gcolvin commented Nov 26, 2018

@liangdzou @expede SIMD is also there to

  • provide a cleaner programming model than fixed 256-bit wide registers
  • take better advantage of modern hardware, even for scalar operations
  • and provide eWasm compatibility.

@bmann
Copy link
Member Author

bmann commented Nov 26, 2018

Thanks everyone for the time on the call. Here's the link to the call notes -- https://hackmd.io/g0yKhTn3TYaThqFWVjF4Ow -- feel free to edit.

I've created an evmevolution label and turned our action items into Github issues.

Please feel free to use this repo for creating meta issues related to EVM evolution.

@gcolvin
Copy link

gcolvin commented Nov 27, 2018 via email

@fubuloubu
Copy link

Otherwise the performance benefits of EIP-615 are only a promissory note, not cash.

The security benefits are more convincing IIRC

@gcolvin
Copy link

gcolvin commented Nov 27, 2018 via email

@expede
Copy link
Member

expede commented Nov 27, 2018

Not that I know any LaTex

I'm happy to brush off my LaTeX for the greater good 👍

Design work remaining is to take advantage of EIP-615 to improve gas model

I'd guess that the gas model would look a lot like a dynamic jump, but can't hurt to give it a close look since we need it in the spec. The gas model probably needs a bit of an overhaul, especially with a lot of the changes coming. As it goes with this kind of thing, starting high and lowing in a later EIP is better than the other way around, but I'm getting ahead of myself now 😛

charged based on current modulus rather than full 256-bit width. Could be in a separate EIP?

A new bit-width flag would need its own EIP, IMHO. This is a more complex and broader in scope than jump safety.

or move directly to a clean new version

Doing a cleanroom implementation is probably out of scope. We should either do this in GPLed Aleth (if the existing code can be easily adapted for the current client). Otherwise I would love to see this on a Parity branch (two birds with one stone). Thoughts?

@gcolvin
Copy link

gcolvin commented Nov 27, 2018 via email

@gcolvin
Copy link

gcolvin commented Nov 27, 2018 via email

@expede
Copy link
Member

expede commented Nov 27, 2018

🤔 I don't know if Parity has EVMC capability (it's not listed on the EVMC README at least). They've done their own highly-tuned EVM in Rust, so I'm not sure that they'd be looking to switch it out completely.

@gcolvin
Copy link

gcolvin commented Nov 27, 2018 via email

@gcolvin
Copy link

gcolvin commented Nov 27, 2018 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
evmevolution EVM Evolution
Projects
None yet
Development

No branches or pull requests

5 participants