Typo on NEO Developers’ Conference (DEVCON) January, 2018 credit to Boxmining YouTuber - neo dev con opening
Do watch the youtube video by clicking on this link below
Subscribe to the Youtuber’s channel, click on the notification button to be alerted on new posted videos.
Please do read my typo as well; copy and paste for personal future reference (remember to use navigation (Ctrl + F, for Microsoft documents etc); and upvote my steem blog.
Technology
utility or use case
bitcoin: 1st ever killer app blockchain
ethereum: 2nd killer app ICO
Neo: wants to be the 3rd killer app Decentralized Exchange
centralized problems disadvantages
security
regulation
cost of operation; you need a lot of manpower
Criteria or advantage properties of a decentralized exchange
- blockchain
- fast verification or confirmation meaning not need for too many. For example, neo has Byzantine fault Tolerance (BFT) where one confirmation is final as you do not need to wait for a second confirmation
- interoperability. Using neo x protocol: btc or eth can be moved onto the neo blockchain and be traded with other tokens
- digital identity. Using neo id
- stable coin like tether etc.
1000 TPS. By 2020 neo will be the number one blockchain with 100,000 tps
sharding cannot solve protocol problems, as congestion may occur
Competition
governance
technology: treated in topics above
ecosystem
Ecosystem
invest in neo tokens that are crucial to the system. Neo concept. NGC
open blockchain foundation to fund research. Ontorlogy product. Support students in training for research etc
Governance
neo has 7 consensus nodes which would be decentralized in 2018 by allowing technically sound individuals or companies to run this nodes
Project spending of reserved tokens
in 2014, neo decided to keep 15% of tokens.
In math we trust
to develop thought on crypto-economic science
Medium of exchange concept
comparism to electric field interaction, as an exchange, between two charges
The value of a medium of exchange is precise value. Which is it's consensus, taking gold, the 1 gram of gold is always or easily 1 gram of gold in a different location
Same for crude oil for barrels, gas for kg etc
consensus is only possible with entropy. To achieve consensus without cost will reduce entropy, thereby consensus is not really achieved.
bitcoin follows the concept of consensus and entropy above
Bulletproofs: efficient confidential transactions using bulletproofs
bulletproofs will provide friendliness to business
Addresses are strings of text that are not easily identifiable
Privacy as transactions are avaliable on the clear. So it will not be used to pay salaries. Therefore amounts ought to be hidden but the user id should remain viewable, like Cryptographic commitment
Fees is still shown so that the miner is aware.
Zero Knowledge Proofs is included in the transaction to help the miner or node verify
range proofs
signal protocol
Bulletproofs
much shorter than signal protocols.
may be a good way to proof solvency in exchanges
https://www.coindesk.com/aim-fire-bulletproofs-breakthrough-privacy-blockchains/
in the article above, developers including charlie lee are excited about bulletproof. Reminds of when zero knowledge proofs in zcash came out, and the price went so high. The first crypto with bulletproof will -
- have a crazy ico, and exchange hit just like zcash
A deep dive into NeoVM & NeoContract by erik, neo founder & core developer
what is neocontract
this consits of neovm, neocontract…software developmenet
neovm is not just applicable to blockchains.
SDK (search "credits") makes neo smart contract development a user friendly experience
NeoVM operations
Essentials are Interop -stacks - execution engine, all having smart contract code of instructions such as: constant instructions; flow-control;stak; string; logical; arithmetic; crytography; data structure; exception
with above, developers can right complex smart contracts that may involve complex data structure invocation, cryptography and exception handling.
Instruction set; debugger - the execution engine has a built-in debugger (search cardano or haskell)
Partial instructions mentioned above are stack operation instructions, implying that NeoVM is stack-based. NeoVM has 3 available stacks which are call stack, calculator stack and standby stack
call stack records the running state at the time of functions being called, so that the program may resume running in the contexts where the function is returned.
calculator stack, the buffer storage area, can be directly accessed by smart contract code. Take additive operation, two additive operands will be pushed into the calculator stack and executed following additive -
- instruction. The executive engine will read and add up the operands from the top of calculator stack and write the result back to the top.
whereas, the standby stack stores data tentatively of no use to the calculator stack.
Interoperability (interop) services, if we compare execution engine to the CPU of a computer, then the stack is the memory and interopservices are the system bus.
Interoperability (interop) connect the execution engine, stacks and external services, allowing smart contracts to access all the NeoContract APIs. For example, time stamp service and persistent storage
With the way above, smart contract is enriched with more functions. Hence capability to be applied not only in blockchain, as long as there is a workable interop service API
NeoContract APIs
smart contracts may acess these APIs via interop services to complete more complex tasks.
Runtime Infrastructure,
the current running state of the smart contract: Trigers NEP-7; Timestamp server; notifications and logs
NeoContract cannot operate until being triggered. For example, when a node is verifying a transaction, the validation will be fired to execute associated smart contract. The application trigger will be fired when a distributed app is activated by a transaction; the receiving trigger will be fired when a transfer is successfully made on a smart contract, which either allow the contract to turn down the transfer request in the early validation stage or process the transferred amount in the later stage.
Timestamp server, allows a running smart contract to get the current time stamp distributed as it is blockchain must have an interface to ensure that all the nodes reach consensus at a given time. Thus we take the time stamp of a block as the data source of the service.
Finally, smart contracts can communicate with verification node at runtime by notifications and logs. Which is useful information for verification node to track the status of smart contracts
Ledger Data: blocks and transactions; balance of accounts
on some occasions, smart contracts are required to read blocks, transactions or balance of the user's account to make judgement. This is why we have a lot of APIs in place for smart contracts to read every single field of every transaction. Either via APIs or transactions, external data will be accessible and readable on-chain. As long as there is a mechanism that ensures the reliability of data on-chain, we can implement a decentralized oracle.
storage: key-value stores; storage context
persistent storage, on the other hand, is also of great importance. We have provided data access interface based on key-value pairs. Data records may be read or deleted from or written to the smart contract using keys. Besides, smart contracts may retrieve and send their storage contexts to other contracts, thereby entrusting other contracts to manage their storage areas.
Based on such mechanism, we can write a particular smart contract to abstract the underlying key-value pair storage function and offer advanced data base management service.
Then it is a reusable contract on data management
smart contract: create; upgrade; destroy
smart contract management function allows deployed smart contracts to be managed at runtime. It has 3 functions
- it can create and deploy a smart contract, as to say: you can create a new smart contract in an existing smart contract.
- upgrade or migrate all the existing contracts;
- destroy deployed contracts. Once a smart contract is deployed on the blockchain, it is ready to be used; it will be destroyed as soon as it is no longer of use. Once a contract is destroyed, its storage area will be -
- destroyed along with it; once a contract is migrated, the content in the old storage area will also be copied and pasted to the new storage area. This is how content are migrated in the storage area.
digital asset: global assets; contract asset NEP-5
NEO and GAS are both global assets. You may also create a new global asset through APIs. The new global asset is on a par with NEO and GAS, neither superior nor inferior
All global assets are based on UTXO model. Their entity credit can be reflected by NeoID
Contract assets on the other hand, depend on the storage function of NeoContract. The entire ledger of contract assets is stored in the storage areas of smart contracts which manage all the accounts.
NEP-5 is a token standard we have released for contract assets. You can find more about the proposal at GitHub (https://github.com/neo-project/proposals).
if your contract is compatible with NEP-5 tokens defined in the contract will be supported by the majority of NEO wallets
How to develop smart contracts on Neo
.NET languages (C#, VB.NET, F#); Java languages (Java Kotlin); Python;and, JavaScript. These are the advanced languages.
C# is the best supporting programming language on neo blockchain. Of course, python support is also very mature.
In the future, our programming will go with more advanced languages, e.g. Golang,
IDE
C# is the best supporting programming language on neo blockchain because of its compatibility with visual studio, an IDE that supports development, compilation and debugging
Python is a good choice for consistent development
java is a good choice because you can develop with Eclipse.
If a developer decides not to choose any of the above languages: he can develop with an editor, and convert the program into NeoVM byte code with a NEO complier
neo complier
source code:- Byte Code:- Deploy, Execute; ABI:- Invoke
neo complier can compile the advanced language into byte code which can be run in NeoVM. At the same time, ABI files which conform to NEP-3 protocol will be generated.
we can deploy the byte code on neo blockchain. Then these codes can get access to the storage area of the blockchain or they can be invoked by other contracts. Or, we can put the byte codes inside a transaction -
- and execute them directly.
If the byte codes are directly executed, then it will not be necessary to deploy the smart contract, and of course, deployment fees won't be charged by the system.
the ABI file which describes a list of functions and events can be used to invocate a smart contract, playing the role of informing node apps and users how to use the contract. As such, I can send the file to end-users,- - who will be instructed of how to use the smart contract by opening the file in the node app. (to continue 1:40:18)
Future Vision for NeoContract
1. Serialization and Deserialize.
smart contracts may involve extremely complex data structure. It is hardly possible to save them in the storage area for the time being, though promising in the future if we add a set o APIs to Neocontract to seria-
-lize the data into byte arrays or deserialize the byte arrays into the original data structure.
The APIs, if implemented, will enable the storage area to access any form of data.
2. Storage Iterator.
due to its limited storage function, the contract only reads one record. The record is inaccessible unless you now its key. The storage iterator allows users to search records by setting conditions and even read,-
- modify and delete some records. Suppose you expect your contract to calculate the total balance o all users. To fulfil the function, the balance in each user account must be read and added up.
however, smart contracts will not be able to locate the records in the ledger unless you provide an iterator.
3. Stack Isolation.
As mentioned before, neovm has call stack, calculator stack and standby stack available or smart contracts.
call stack cannot be directly modified by smart contract. But by using process control instructions, which guarantees data security; calculator stack and standby stack are modifiable by changing the contract code.
that means an invoker's calculator stack is at the risk o being modified by an invokee. It is less risky if it is a static call because the invoked object is definite and so is its behavior,
however, as dynamic call mechanism has already been brought up in NEP-4, which will be applied to future use cases.
it is highly possible that the flawed mechanism described above will undermine the data security o invoked contracts in the future.
as a countermeasure, we have proposed an enhancement proposal or NeoVM.
The proposal describes an intended isolation between calculator stack and standby stack leaving independent stack space for every frame on the call chain (1:43:05).
Once adopted, the stack isolation solution will tackle the security loopholes inherent in dynamic calls on the one hand and support advanced features in the future on the other, such as exception handling.
4. Exception Handling
Exception handling ability is another issue on the enhancement proposal.
Currently, the contract is able to throw an exception, though addressed by only one solution: the exception will cause a virtual machine error that forces contract execution failure.
We propose to improve by adding new exception handling instructions to NeoVM that allow the contract to try/catch exceptions and recover if possible.
The improvement cannot be implemented without isolating calculator stack from others.
5. Dynamic Sharding
We are aware that some blockchains are suffering jammed traffic, which is not a concern of NEO for the time being. NEO has a strong system infrastructure that supports a payload up to 1000tps. But with a growing number of apps built on NEO, it is hard to tell whether it is still the case in the future.
Therefore, we must prepare an expansion plan to take the upper brand on the “jamming effect”.
Sharding is a viable solution to TPS ramp-up. The dynamic sharding proposal under planning is about isolating irrelevant contracts by putting them in different shards and converging relevant ones in the same shard to allow concurrent execution. By relevant contracts, I mean those functioning in a contract call, either an invoker or invoke and vice versa.
As the call relationship between contracts keeps changing, the sharding rules will adjust accordingly to maintain the system at an optimal state.
Dynamic call proves to be more effective in raising TPS than static call.
6. NeoX
NeoX is a cross-chain solution we proposed. It contains cross-chain exchange protocol and crosschain distributed business logic.
Discussions regarding cross-chain will hold on another day. For now, we shall discuss NeoX technology.
Technology
It allows smart contracts to be executed across blockchains. Simply put, it takes many steps to execute smart contracts, ending up in either “all success” or “all fail”.
It is easier if all these steps are executed on the same chain, while much harder across different chains considering the consistency issue. NeoX is designed to tackle the problem.
But to implement the technology, NeoVM must be improved to allow state lock and rollback.
Once implemented, the technology will support cross-chain smart contract execution without compromising the consistency, though under one prerequisite – NeoVM or similar technology must be adopted. In fact, NeoVM is ready to be applied to many blockchains.
Therefore, crosschain smart contract execution will be super easy in the future
Reference
Live: blockchain revolution #2 Jibrel Network.
Este Post ha recibido un Upvote desde la cuenta del King: @dineroconopcion, El cual es un Grupo de Soporte mantenido por 5 personas mas que quieren ayudarte a llegar hacer un Top Autor En Steemit sin tener que invertir en Steem Power. Te Gustaria Ser Parte De Este Projecto?
This Post has been Upvote from the King's Account: @dineroconopcion, It's a Support Group by 5 other people that want to help you be a Top Steemit Author without having to invest into Steem Power. Would You Like To Be Part of this Project?