Category Archives: C Sharp

New Month’s Resolutions: September 2018

A lot of work these days, but it’s time to write down my new month’s resolutions. First, the review of previous month’s ones:

– Continue BlockchainJ [complete] see repo
– Continue BlockchainSharp [complete] see repo
– Continue SimpleEvm [complete] see repo
– Continue HuskyJS [complete] see repo
– Continue AprendiendoSolidity [pending]
– Continue RSharp [complete] see repo
– Give a talk about building a blockchain in Java [complete]

Additionally, I was working on:

– Improve Neurum, neural networks in C# [complete] see repo
– Improve Husky, Haskell interpreter in C# [complete] see repo
– Improve SimpleTensor, TensorFlow in JavaScript [complete] see repo
– Improve SImpleGA Bitcoin Trading data [complete] see repo
– Improve TensorSharp, TensorFlow ideas in C# [complete] see repo
– Improve Elmie [complete] see repo
– Add sample to RSKApi [complete] see repo
– Start Dexert, decentralized ERC20 token exchange for Ethereum/RSK [complete] see repo
– Start EthBridge, bridge for Ethereum to Ethereum [complete] see repo
– Improve Evm2Code [complete] see repo
– Improve Yasold, yet another Solidity decompiler [complete] see repo

My new month’s resolutions:

– Continue BlockchainJ
– Continue BlockchainSharp
– Continue SimpleEvm
– Continue HuskyJS
– Continue AprendiendoMachineLearning
– Continue RSharp
– Continue Dexert
– Continue EthBridge
– Give a course about smart contracts programming
– Give a talk about blockchain-
– Experimental code with Ethereum/RSK
– Start to prepare a talk about neural networks

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
https://github.com/ajlopez
https://twitter.com/ajlopez

 

New Month’s Resolutions: June 2018

Time to write my monthly resolutions. Review of May’s one:

– Continue Exeth [pending]
– Continue SimpleDSL [pending]
– Continue NlpLib [complete] see repo
– Continue RskApi [pending]
– Continue BlockchainJ [pending]
– Continue BlockchainSharp [complete] see repo
– Continue SimpleEvm [complete] see repo
– Continue AprendiendoSolidity [pending]
– Continue RSharp [pending]
– Give a talk about Blockchain in C# [complete]
– Prepare talks about Artificial Intelligence [complete]

My new month’s resolutions:

– Continue Exeth
– Continue SimpleDSL
– Continue NlpLib
– Continue RskApi
– Continue BlockchainJ
– Continue BlockchainSharp
– Continue SimpleEvm
– Continue AprendiendoSolidity
– Continue RSharp
– Give a talk about Smart Contracts
– Give a talk about Artificial Intelligence
– Give a talk about Machine Learning

Angel “Java” Lopez
http://www.ajlopez.com
https://github.com/ajlopez
https://twitter.com/ajlopez

New Month’s Resolutions: May 2018

Time to write new new month’s resolutions. First, review of the previous’ones:

– Continue SimpleGo [pending]
– Continue Exethn [complete] see repo
– Continue HuskyJS [pending]
– Continue RskApi [pending]
– Continue BlockchainJ [pending]
– Continue BlockchainSharp [complete] see repo
– Continue SimpleEvm [complete] see repo
– Continue TensorSharp [pending]
– Continue AprendiendoSolidity [pending]
– Continue SharpGo [pending]
– Continue RSharp [pending]

Additionally, I worked on:

– Improve ChineseP [complete] see repo
– Start NLPLib [complete] see repo
– Start smarttalk [complete] see repo
– Improve SimpleGA samples [complete] see repo
– Improve SimpleDSL [complete] see repo

My new month’s resolutions:

– Continue Exeth
– Continue SimpleDSL
– Continue NlpLib
– Continue RskApi
– Continue BlockchainJ
– Continue BlockchainSharp
– Continue SimpleEvm
– Continue AprendiendoSolidity
– Continue RSharp
– Give a talk about Blockchain in C#
– Prepare talks about Artificial Intelligence

Angel “Java” Lopez
http://www.ajlopez.com
https://github.com/ajlopez
https://twitter.com/ajlopez

New Month’s Resolutions: April 2018

A new month in progress. Time to review the previous month’s resolutions:

– Continue SimpleGo [pending]
– Continue Exeth [complete] see repo
– Continue HuskyJS [complete] see repo
– Continue RskApi [complete] see repo
– Continue BlockchainJ [complete] see repo
– Continue BlockchainSharp [complete] see repo
– Continue SimpleEvm [complete] see repo
– Continue TensorSharp [complete] see repo
– Continue AprendiendoSolidity [pending]
– Continue SharpGo [pending]
– Resume Machine Learning Mentorship [pending]
– Continue Solidity Mentorship [partial] see repo

Additionally, I worked on

– Add example to SimpleDT [complete] see repo
– Create evmasm [complete] see repo
– Improving RskUtils [complete] see repo
– Add https support to SimpleJsonRpc [complete] see repo
– Improve Bitcoin sample SimpleGA [complete] see repo
– Continue RSharp [complete] see repo [complete] see repo
– Continue CrysSharp [complete] see repo
– Improve LllJs [complete] see repo
– Improve Emv2Code [complete] see repo
– Improve SolidityCompiler [complete] see repo

My new month’s resolutions:

– Continue SimpleGo
– Continue Exeth
– Continue HuskyJS [complete] see repo
– Continue RskApi
– Continue BlockchainJ
– Continue BlockchainSharp
– Continue SimpleEvm
– Continue TensorSharp
– Continue AprendiendoSolidity
– Continue SharpGo
– Continue RSharp

Angel “Java” Lopez
http://www.ajlopez.com
https://github.com/ajlopez
https://twitter.com/ajlopez

 

New Month’s Resolutions: January 2018

A new year started, and it’s time to write the new month’s resolutions. First, a review of the December’s ones:

– Continue BlockchainJ [complete] see repo
– Continue BlockchainSharp [pending]
– Continue ChineseP [pending]
– Continue TensorSharp [complete] see repo
– Continue Elmie [pending]
– Continue Smartie [complete] see repo
– Continue Evm2Code [complete] see repo
– Continue AprendiendoSolidity [pending]
– Continue AprendiendoMachineLearning [pending]
– Continue Machine Learning Mentorship [pending]
– Prepare another Smart Contracts Programming Course [complete]
– Continue SimpleGo [pending]

I was also working with:

– Continue Yasold [complete] see repo
– Continue RskApi [complete] see repo’
– Improve RskUtils [complete] see repo
– Continue simpleevm [complete] see repo
– Start exeth, Ethereum scripting language [complete] see repo
– Improve SimpleDSL [complete] see repo
– Improve SoliditySamples [complete] see repo
– Improve SolidityCompiler [complete] see repo
– Improve Acquarella [complete] see repo
– Improve smartie [complete] see repo

My January’s resolutions:

– Continue BlockchainJ
– Continue BlockchainSharp
– Continue ChineseP
– Continue TensorSharp
– Continue Elmie
– Continue Smartie
– Continue Evm2Code
– Continue AprendiendoSolidity
– Continue AprendiendoMachineLearning
– Continue Machine Learning Mentorship

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
https://github.com/ajlopez
https://twitter.com/ajlopez

 

 

 

New Month’s Resolutions: December 2017

The end of the year is near. As usual, I write my resolutions by month, not only by year. First, a review of the last month ones:

– Continue BlockchainJ [complete] see repo
– Continue BlockchainSharp [complete] see repo
– Continue ChineseP [complete] see repo
– Continue TensorSharp [complete] see repo
– Continue SimpleTensor
– Continue Elmie [complete] see repo
– Continue AprendiendoSolidity [complete] see repo
– Continue AprendiendoMachineLearning
– Prepare Machine Learning Mentorship [complete] see talk repo
– Prepare Smart Contracts Programming Course [complete]
– Continue SimpleGo [complete] see repo
– Continue AjGo [pending]

Also I was working on:

– Improve SoliditySamples [complete] see repo
– Improve Smartie [complete] see repo
– Improve SimpleDSL [complete] see repo
– Improve BInte [complete] see repo
– Improve BInte [complete] see repo
– Start Evm2Code [complete] see repo
– Improve SimpleLisp [complete] see repo
– Improve SimpleLists [complete] see repo
– Started MissHanna, a Wordical solver [complete] see repo
– Improve SimpleGA sample [complete] see repo
– Improve SimpleNeuro [complete] see repo
– Improve SimpleBoggle [complete] see repo
– Improve SimpleDraw [complete] see repo

My new month’s resolutions:

– Continue BlockchainJ
– Continue BlockchainSharp
– Continue ChineseP
– Continue TensorSharp
– Continue Elmie
– Continue Smartie
– Continue Evm2Code
– Continue AprendiendoSolidity
– Continue AprendiendoMachineLearning
– Continue Machine Learning Mentorship
– Prepare another Smart Contracts Programming Course
– Continue SimpleGo

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
https://github.com/ajlopez
https://twitter.com/ajlopez

 

New Month’s Resolutions: November 2017

The end of year is near. Time to write the new month’s resolutions, but first, review the previous ones:

– Continue smartie [complete] see repo
– Continue simpleevm [pending]
– Continue BInte [pending]
– Continue Yasold [pending]
– Continue BlockchainJ [complete] see repo
– Continue BlockchainSharp [complete] see repo
– Continue ChineseP [pending]
– Continue TensorSharp [complete] see repo
– Continue SimpleTensor [pending]
– Continue Elmie [complete] see repo

I was also working on:

– Improve SimpleDSL [complete] see repo
– Improve SimpleGA [complete] see repo
– Start SoliditySamples [complete] see repo
– Improve RskApi [complete] see repo
– Improve RskApi [complete] see repo
– Start Dapplib [complete] see repo
– Start AprendiendoSolidity [complete] see repo
– Improve HuskyJS [complete] see repo
– Improve ClojureSamples [complete] see repo
– Improve SimpleGo [complete] see repo
– Improve SimpleGo [complete] see repo
– Start AprendiendoInteligenciaArtificial [complete] see repo
– Start AprendiendoMachineLearning [complete] see repo

My new month’s resolutions:

– Continue BlockchainJ
– Continue BlockchainSharp
– Continue ChineseP
– Continue TensorSharp
– Continue SimpleTensor
– Continue Elmie
– Continue AprendiendoSolidity
– Continue AprendiendoMachineLearning
– Prepare Machine Learning Mentorship
– Prepare Smart Contracts Programming Course
– Continue SimpleGo
– Continue AjGo

Stay tuned!

Angel “Java” Lopez
https://github.com/ajlopez
http://www.ajlopez.com
https://twitter.com/ajlopez

New Month’s Resolutions: October 2017

The end of new year is near. It’s time to write down my list of resolutions for a new month. Review of the previous month ones:

– Continue Yasold
– Continue BlockchainJ [complete] see repo
– Continue BlockchainSharp [complete] see repo
– Continue ChineseP [complete] see repo
– Continue TensorSharp [complete] see repo
– Continue SimpleTensor [complete] see repo
– Continue WikiExpert [pending]
– Continue Neurum [pending]
– Continue LLLJS [pending]
– Continue Elmie [pending]

Additionally, I worked on

– Improving RustScript [complete] see repo
– Improving BInte [complete] see repo
– Started simpleevm, Ethereum Virtual Machine in JavaScript [complete] see repo
– Improving SolidityCompiler [complete] see repo
– Writing EvmHook [complete] see repo
– Writing SimpleAbi [complete] see repo
– Improving RSharp [complete] see repo
– Improving EthSharp [complete] see repo
– Starting smartie, a new smart contract language compiler/transpiler [complete] see repo

My new resolutions are

– Continue smartie
– Continue simpleevm
– Continue BInte
– Continue Yasold
– Continue BlockchainJ
– Continue BlockchainSharp
– Continue ChineseP
– Continue TensorSharp
– Continue SimpleTensor
– Continue Elmie

Stay tuned!

Angel “Java” Lopez
https://github.com/ajlopez
http://www.ajlopez.com
https://twitter.com/ajlopez

Building A Blockchain (16)

Previous Post

In recent months I have been busy working on the RSK project. It’s time to write about my personal blockchain projects:

https://github.com/ajlopez/BlockchainSharp
https://github.com/ajlopez/SimpleBlockchain
https://github.com/ajlopez/RskSharp

Currently, the most active one is the C# project. I added one project:

https://github.com/ajlopez/BlockchainJ

in Java. The experience I gained written all this code (using test-driven design, as usual) gaves me a clear idea of what is involved when building a blockchain. Writing my own implementations gave me better understanding of the parts related to the creation of a blockchain. And now the RSK project (Java core implementation) is public, I’m free to relate this work with an existing full implementation.

The key points to be written are:

  • Entities
  • States
  • Virtual machine to run smart contracts
  • Encoders
  • Consensus
  • Validation logic
  • Inter-node communication
  • Expose node state to external applications

The base entities are:

  • Block
  • Transaction
  • Account

The states to be kept are:

  • Blockchain
  • Account state
  • Contract state

My projects are oriented to have smart contracts, a la Ethereum. One reason to have a virtual machine is be agnostic of host programming language. I think that having a way of run smart contract that is independent of the programming language used in each project, is an interesting feature. So, I should define:

  • Virtual machine opcodes
  • Transient (memory) storage
  • Persistent storage

I need encoders for blocks, transactions and account states. The encoded entities are used in the network communication, local storage, and in the hash calculation. For example, when I have to transmit a block I encoded it. And if I want to send the block to another node, I should encoded the block before transmission. And the encoded data is the basis for hash calculation.

The inter-node communication includes:

  • Message definitions
  • Message and handshake protocol
  • Peer-discovery protocol

Validation logic refers to:

  • Validation of blocks
  • Sign of transaction and its validation

Consensus logic has:

  • Selection of the next block
  • Run of the transactions, updating the accounts/contracts states

The exposure of a node state is implemented in Bitcoin and Ethereum using JSON RPC (Remote procudure call), usually exposed via http. In this way, the node can be accessed by external technologies implemented in different technologies (JavaScript blockchain ecosystems are the more popular).

Followin Ethereum ideas, one entity I implemented many times is a trie. I think my implementations are very simple and effective. I hope to be able to write in the next posts about those implementations.

Stay tuned!

Angel “Java” Lopez
https://github.com/ajlopez
http://www.ajlopez.com
http://twitter.com/ajlopez

 

 

 

New Month’s Resolutions: September 2017

A lot of ideas and projects, and only one life. Time to review the last month’s resolutions:

– Continue Yasold [complete] see repo
– Continue SimpleBlockchain [pending]
– Continue BlockchainSharp [complete] see repo
– Continue ChineseP [complete] see repo
– Continue TensorSharp [complete] see repo
– Continue SimpleTensor [complete] see repo
– Continue WikiExpert [pending]
– Continue Neurum [complete] see repo
– Continue LLLJS [pending]
– Continue HuskyJS [pending]

Additionally I worked on:

– Started BlockchainJ [complete] see repo
– Improve RustScript [complete] see repo
– Start Elmie, Eml-like language transpiler to JavaScript [complete] see repo
– Improve PLangRe [complete] see repo
– Improve RSharp [complete] see repo
– Improve RskAPI [complete] see repo

My new resolutions:

– Continue Yasold
– Continue BlockchainJ
– Continue BlockchainSharp
– Continue ChineseP
– Continue TensorSharp
– Continue SimpleTensor
– Continue WikiExpert
– Continue Neurum
– Continue LLLJS
– Continue Elmie

Stay tuned!

Angel “Java” Lopez
http://www.ajlopez.com
http://twitter.com/ajlopez