Categories
Blockchain Entrepreneurship Other

Do you need a blockchain project? Six easy steps to verify it

You may be fascinated by blockchain technology, hearing about all those ground-breaking projects, and thinking about bringing it to your organization.

But some questions should pile up:

  • What is the right case to start the blockchain project?
  • Will it work for my organization?
  • Will the blockchain network work as a part of my product?

If you have worked in the business for some years, you probably know there are rarely simple yes or no answers to the questions. Having said that, if the idea is: let’s take any relational database and change it into a blockchain network, the response in 99,9% of cases is: “no”.

Let’s take together six steps to assess six aspects that help indicate if the organization is ready for the blockchain project.

Here are the steps:

  1. Consortium
  2. Company organizational complexity
  3. Database vs blockchain
  4. Trendsetter or follower
  5. One source of truth
  6. If… then…

And then as a bonus topic, we will mention the easiest way to decide between a public and a private network.

Blockchain supports consortia

A consortium is a way for businesses to join forces and reach goals they can not reach by themselves. In a consortium, trust needs to be gained, so it’s beneficial when the technology guarantees transparency and follows the rules. A distributed ledger is a way to achieve that. 

What is essential, in consortium there is no typical hierarchy, and, thanks to blockchain, equality is also maintained on the data level. Each participant has the same rights to read and write information and has the right to monitor the actions of other participants – blockchain nodes are equal, and the data history is transparent.

There are situations where not all data should be shared between all participants. Selected groups within the consortium may exchange data only between them. It is also one of the enterprise-friendly features of the Hyperledger Fabric network.

Handle complexity with blockchain

Complex technical and organizational structures are complicated and sometimes almost impossible to unify. There is no need for that with blockchain. Blockchain network nodes operate in local environments, while data consistency and immutability are ensured globally. 

That is often the case for enterprise companies, which have 100+  branches worldwide and face troubles with managing internal processes engaging many departments.

This complexity of structure and independence of branches may be a way to obtain local auditability and accountability. Each of the separate organizational units follows local compliance standards and is responsible for its data. In the case the database is centralized there is a unit being the global data owner, and that can result in an additional organizational burden and an increased risk factor.

Blockchain or database is a go-to solution depending on the business case 

Answering “yes” to the following questions is a good indicator to start using blockchain:

  1. Are data integrity and a tamper-proof solution crucial for the project?
  2. Does each member need their own copy of the data?
  3. Does every reader and writer require a transparent and easily accessible data history?
  4. Should data be processed automatically according to agreement terms enforced independently?

The “yes” answers you gave specify features that get many blockchain projects going.

Positive answering to the following questions is a good indicator that the centralized database should be used:

  1. Is a single entity responsible for the data, and is it controlling dataflow?
  2. Are data performance and data search the core of the system?
  3. Does each participant exchange data only with the central party?
  4. Do large quantities of graphics, movies, and other non-transactional data need to be stored?

Notice that question 4 is tricky. The answer may be yes for the tokenization process, and you still use blockchain with the support of IPFS technology, for instance.

Generally, if you said yes to some questions from the second section, analyze all other aspects presented in the article to decide if blockchain or other technology is what your project needs.

Blockchain is used by trendsetters and followers

For trendsetters, a blockchain project is a way to differentiate themselves and be one step ahead of competitors – enterprise blockchain with a mature ecosystem is a great way to be bold and to get momentum before others in the industry. Blockchain technology brings value by, to mention a few, work automation, reducing intermediaries, and providing transparency. This is why being the first to start a DLT project is not about getting good publicity, but it doesn’t hurt.

Followers are the companies that implement what others in the industry tested and succeeded in. Even if the company is very cautious toward new trends, it is still aware of the need to follow modern technological trends. There are multiple blockchain projects in various industries, and understanding use cases in yours is a way to get battle-tested blockchain benefits for your use.

Undisputable data state gives blockchain network an upper hand

Dealing with multiple data sources from numerous stakeholders is a common issue – blockchain creates one immutable and trusted source of information for everyone, removing the need for a third-party intermediary. 

In other words, a blockchain network is suitable for systems with no obvious authority or hierarchy between parties. However, there is a demand for one reliable source of information. Without clear authority, errors and omissions are hard to track, and establishing responsibility for updating data can be tricky. Blockchain creates a transparent ledger of all changes, hence data can not be altered or added arbitrarily without other parties knowing. If there is a need for the update it is clear who should be the one to add the new version. There is also no way to hide the time and date of the change.

Blockchain provides process execution in the data storage

Blockchain stores data, but it is also programmable, so to simplify: where there are if… then… rules, the chaincode (blockchain program) may deal with them. Smart contracts (blockchain-run programs) are as transparent as the network so that all participants can audit them.

Another significant change is that rules and agreements can be automatically executed and enforced. Agreements always have a risk level, and sides accept the risks or look for intermediaries to grant rules enforcement – blockchain smart contracts mitigate the risk due to the rules execution by independent technology.

Bonus: which network to choose

There is a big chance that having started to read about blockchain use cases and analyzing if that is something your organization is ready to work with, you heard about public and private blockchains. And regarding this aspect, I would risk a statement that you are in one of the three groups:

  1. That seems clear, there are some advantages of my preferred kind of network and I need to dig into it
  2. I know for sure which blockchain type is suitable for me
  3. No, not yet another thing to discover

If you are in the third group, look below, it can be that simple. If you are in groups 1 or 2, you may do that just to double-check.

First, a good blockchain company won’t let you choose the wrong kind of network; their reliability and business relationship are at stake.

Secondly, private blockchain networks, like Hyperledger Fabric, are a go-to solution for enterprise blockchain projects. They are built with corporate policies and internal regulations in mind. Moreover, when corporate data require secure storage within the organization – private permissioned blockchains are prepared for that. They identify and accept each network member before sharing the data.

Do you know if you are ready for the blockchain project?

Analyzing aspects of the use case against readiness for the blockchain project isn’t a simple task, but there is a group of indicators if the blockchain can bring value to your idea. I presented 6 of them with descriptions. I hope they helped you assess the general blockchain or non-blockchain direction. 

Feel free to contact Espeo Blockchain to discuss your specific case. You can also dig deeper into the topic with our other blog posts:

  1. Blockchains versus databases — What’s the difference?
  2. Pros and cons of blockchain: Do I even need one?
  3. 8 no-nonsense use cases based on Hyperledger Fabric blockchain

This article was written by our Solutions Consultant Agnieszka Hołownia-Niedzielska.

Categories
Software Technology

Automation testing trends to look out for in 2022

In recent years, the interest in automation testing has grown significantly and despite the fact that manual testing still has a leading position, automation is about to replace it quite soon.

Despite the fact that automation testing is an integral part of the software development process, it is becoming more sophisticated in techniques and more user-friendly when it comes to design. Taking this into consideration, what automation testing tools are in use in 2022? To figure it out, I conducted an investigation and collected some most popular test automation trends that will determine the future of testing.

Microservices and API testing

So-called monolith architecture of applications is becoming a legacy, instead microservice architecture is becoming more popular and widely used. The reason for it is the fact that when applications mature and new features are added, they become one gigantic monolith and it becomes more difficult to deploy the application more frequently since each new feature requires much time and effort.

Nowadays, microservice architecture is a good solution, and it is used in more and more projects. It structures application as a collection of services that are highly maintainable, independently deployable, and built around business capabilities. Such applications are highly scalable and with better performance.

In addition to this, companies start investing into API testing more. The reason for this is that it allows developer operations, quality assurance, development, and other teams to begin testing an application’s core functionality before the user interface is ready. As a result, it is easier to find bugs earlier and fix them faster.

Integration testing

Some specialists argue that the testing pyramid is not relevant anymore, and that it has to be modified.

Automation testing trends to look out for in 2022

However, a lot of services in microservice architecture are still valid and take into consideration the fact that applications consist of many microservices and testing them together with the intercommunication among them is of vital importance. Integration testing evaluates application components on a broader level than unit testing and much better than UI testing. It ensures that we ‘communicate’ with databases, file systems, network appliances correctly, and receive accurate responses.

Cloud growth

It is clear that because of COVID-19, more people switch their technology from hosted to a cloud-based solution. It is not as it used to be in the past, where everything was hosted and one had to develop everything from scratch. Nowadays, you just take open-source libraries, which are built in clouds, and start using them for your purposes and shaping them as per your convenience. According to the latest IT market research, cloud spending rose 37% to $29 billion in 2020 and will continue to rise in the following years.

Testing distributed cloud systems

Testing this type of systems requires certain knowledge, techniques, and tools that I believe are already widely used by testers. A great example of such a tool is testcontainers. It is a library that uses docker containers within a test and engineers are able to provide external dependencies and distributed code architecture (such as databases, streams, mocks and anything else that can be dockerized) to them.

Sometimes we don’t discover an issue until it’s in production, but with this type of technology such issues can be found during testing. With cloud services, there are many external dependencies, and testing them can be difficult. However, technologies like testcontainers allow you to create self-contained test environments that mimic real-world conditions. LocalStack is another good example of a tool for testing distributed cloud systems.

Non-functional testing

It is being observed that there is a growing demand for analyzing non-functional requirements that were an area that most companies ignored for many years. Currently, there is a huge amount of applications on the market. Companies compete for each and every user and in order for a company’s product to be more attractive for them, such types of tests as accessibility, security, performance, reliability, and reusability testing are becoming more important than ever.

Understanding the basis of these non-functional areas is a must that all quality assurance engineers should have in order to apply these tests in testing strategy and increase the level of satisfaction of end users.

Codeless and low code automation

One other trend is a significant increase in low-code and codeless test automation. According to Gartner, 65% of all software startups including automation testing tools will be low code by 2024. However, making easy-readable code and creating codeless test automation also takes time and effort. The remote working environment complicates this process even more, as the communication in teams and implementation processes are slower than before the pandemic.

What is more, as we try to shape software quicker and faster, we need to do more different kinds of testing. One of them is exploratory testing. At this point, many people involved in the testing process are not necessarily developers or people with technical backgrounds, so codeless automation is exactly what is needed so that they can help with the testing process and understand exactly what to test.

Currently many easy-to-use codeless test automation tools are being created in order to help quality assurance engineers with the testing process.

AI-assisted automation

AI (Artificial Intelligence) is already changing testing in many various ways. The following are a few test automation scenarios that already leverage AI:

  • Automated, visual validation UI testing
  • Testing APIs
  • Running more automated tests that really matter
  • Creating more reliable automated tests

Of course such automation requires much knowledge, specific skills, analysis, and an understanding of complex data structures, statistics and algorithms. However, once obtained, it will be just a piece of cake for you. In addition to this, there are also many tools that can be used for AI-assisted automation such as ​​GitHub Copilot, DiffBlue and many more. Just try them out and explore all the potential of AI-assisted automation!

Mobile Automation Testing

With the tremendous increase in mobile usage, mobile testing has become a buzz word in the technical world. As mobile applications become more prevalent and they have continuously updated software, there is more pressure to make them faster and responsive for users.

The following are some top trends in mobile testing that will demonstrate that testing cycles are becoming shorter and the common themes are faster testing tools. These trends will help in overcoming the mobile automation testing challenges greatly:

  • Changing release schedules (due to the fact that mobile applications are released very often)
  • Usage of open source tools
  • Usage of Artificial Intelligence and Machine Learning

What’s next for automation testing?

Since mobility is a promising field, it needs to have an improved and robust mechanism for automation testing. As there are many challenges, this field would require excellent technical skills from both developers and testers.

All in all, while working with clients, tech teams often forget one vital thing: the client is their top priority and their work has to meet the clients’ expectations and needs in order to succeed. When it comes to software testing, automation solutions are based on clients’ unique goals. They pay off quicker due to lower operating costs, reduced lead times and increased output, so that is a very good way to make clients happy.

Automation testing trends in 2022 require learning more and harder, understanding new technologies, and paying much more attention to users’ needs than ever, in order to deliver high-quality software faster. Taking into consideration the fact that we live in a fast developing world, the above trends can not be ignored. For this reason, I strongly encourage you to have a closer look at them, good luck!

Categories
Blockchain Financial Services Software

How to build and deploy NFT Marketplace – a step-by-step guide

An NFT marketplace is an online platform based on blockchain that allows for selling and buying non-fungible tokens (NFT-s). This article will show you how to build and deploy the NFT marketplace from scratch on Polygon. Matic Polygon enables the building of the same applications, consistent with the same standards as Ethereum standards, with the added benefits of lower gas costs and faster transaction speed, among other things.

In the following chapters, we will show you how to build a full-stack application using technologies such as React.js as a front-end framework, Hardhat as a Solidity development environment, IPFS for File Storage, and Web3-React for Polygon Web Client. We have described them briefly below.

Polygon – Polygon is a decentralized Ethereum scaling platform designated to be used for building scalable, user-friendly dApps with low transaction fees. It is compliant with multiple Ethereum security and token standards. The platform offers ready-to-use tools to scale, secure, or build networks.

Metamask – MetaMask is a mature, popular and reliable software cryptocurrency wallet that interacts with the Ethereum blockchain. It allows users to manage their crypto assets through a browser extension or mobile app, which can then be used to interact with decentralized applications. The wallet enables adding multiple EVM network tokens.

React – JavaScript library for rapid development of reactive frontend applications. Mature solution with a growing list of frameworks to build web apps.

Hardhat – Ethereum development environment for creating, testing, and debugging code in Solidity. Flexible and popular in multiple mature project solutions for developers.

IPFS – It is a protocol and peer-to-peer network for distributed storing and sharing files. One of the main IPFS features is content-addressing to uniquely identify each file in a global namespace that connects all devices in the network.

Marketplace smart contract 

The central part of the application is the marketplace smart contract “NFTMarketplace” with data storage, core functions, and query functions.

Core functions:

function createMarketItem(address nftContract,uint256 tokenId,uint256 price) payable
function deleteMarketItem(uint256 itemId) public
function createMarketSale(address nftContract,uint256 id) public payable

Query functions:

function fetchActiveItems() public view returns (MarketItem[] memory)
function fetchMyPurchasedItems() public view returns (MarketItem[] memory)
function fetchMyCreatedItems() public view returns (MarketItem[] memory) 

A seller can use the smart contract to:

  • approve an NFT to market contract
  • create a market item with a listing fee
  • waiting for a buyer to buy the NFT
  • receive the price value

When a buyer buys an NFT in the marketplace, the market contract processes the purchase process:

  • buyer buys by paying the price value
  • market contract completes the purchase process:
    • transfer the price value to the seller
    • transfer the NFT from seller to buyer
    • transfer the listing fee to the market owner
    • change market item state from Created to Release

NFT marketplace smart contract coding

Let’s elaborate on each step with code samples.

Storing data in IPFS 

But first of all, let’s create our NFT and store its data on IPFS. IPFS is a peer-to-peer hypermedia protocol designed to preserve and grow humanity’s knowledge by making the web upgradeable, resilient, and more open.

To upload our file to IPFS, let’s use two functions for the front-end side.

The first is uploading an image to the store, and the second uploads metadata with a newly created link to this image.

UploadToIPFS function returns url which then we set into NFT ERC721 smart contract.

Minting NFT

We have to create an NFT ERC721 smart contract inheriting OpenZeppelin’s ERC721 implementation. We add such functionality here:

  • auto-increment token id 
  • safeMint(to, tokenId) everyone can mint
  • _setTokenURI(tokenId, uri) to set up IPFS URI for our NFT metadata object

We also add a deploy script scripts/deploy.ts to deploy the smartcontract with name: NFToken and symbol: ERC721

As well as automatically verify the contract script:

As a result, we have just created NFT ERC721 smart contract, deployed it, verified and we can use it to mint multiple NFTs with metadata stored on IPFS.

As blockchain functions, require a time- and resource-consuming mining process of verifying and validating blockchain transactions some time should be gone before we can use our NFT. ERC721 token under the hood emits events we can subscribe for. Let’s subscribe to the Transfer event on our application’s front-end part to get know exactly when/if the transfer or creation of NFT is completed:

And approve this NFT right here to use it by NFTMarketplace smart contract:

NFT marketplace smart contract’s structure

We define a structure for MarketItem:

Every market item can be one of three states:

All items are stored in a mapping:

The market has an owner which is the contract deployer. The listing fee will be going to the market owner when an NFT item is sold in the market.

The first thing to do is to list market items for sale by calling createMarketItem function providing a fixed price for it:

Create MarketItem function also checks whether the price is greater than zero and NFT is approved by the owner of the market. In the end, it emits a creation event to the front-end where we could catch this event for different purposes.

The responsible function for buying is createMarketSale which apart from selling logic checks whether buying price is equal selling price and emits a selling event to the front-end.

An important part of the application is setting up a market owner fee as well as transferring marketplace ownership:

Web3 app setup

Set up web app project using Web3-React & Chakra UI

  • React
  • Next.js
  • Chakra UI
  • Web3-React
  • ethers.js
  • SWR

Crypto wallet configuration

Prepare your MetaMask

Make sure your MetaMask has the RPC URL https://rpc-mumbai.matic.today/ and chain id 80001 for Mumbai Polygon testnet.

In webapp/ folder, run the command from the terminal:

We will use the web3 connecting framework Web3-React to get our job done. The web app stack is:

On the browser, go to page: http://localhost:3000/ where our webpage is running in the local environment and try its functionality.

Summary – Marketplace ready to operate

As a result, we have created a starting point for a customizable alternative to ready-to-use solutions like OpenSea. Notice that we have created not only smartcontract predestined for buying and selling that is crucial for the marketplace. We also made NFTs, so if a collection of NFTs is all you need, use only the smartcontract to mint and get those NFT-s into your wallet.

If there was anything that surprised you as the reader in the process we have described, please feel free to get in touch with us.

This article was written by Blockchain Developer Roman Foltyn. Click HERE for a source code

Categories
Software Technology

The role, skills, and business impact of software architects on product success

Having well-designed software architecture means having architectural integrity, short-term and strategic guidelines, manageable complexity, and reduced maintenance costs, resulting in an increased business competitiveness. Consequently, well-made decisions on databases, user interfaces, cloud services, and data security guarantee optimal usability of digital solutions.

At Espeo Software, we place special emphasis on the architecture in order to ensure the highest quality of the solutions we deliver for our clients. This is why our architects have a deep knowledge on technology which supports effective decision making.

What makes software architects so valuable to the projects they work on?

There are many things that can go wrong during the software development process. To name a few, code pieces can be hard to test for the development team, the system can be tightly coupled, new modules can pose integration problems, scaling can be expensive, and the solution may be inefficient or resilient.

If you have a software architect on your project, these issues are minimized, resulting in an improved quality, stability, and scalability of your digital solution. How is that possible? Software architects make high-level design choices and frame the technical standards that meet your business needs. This includes the decisions regarding software architecture recommendations, coding standards, and working methods and team composition later in the development stage.

At Espeo Software, the software architects have extended senior-level experience from different customer environments. As a result, they ensure that the best practices to support digital transformation are incorporated into your project. What is more, the architects are responsible for collecting all technical requirements and are your point of contact with the technical leaders. They also serve as a liaison between the consulting team and the software development team.

In my role as a software architect at Espeo, I am responsible for determining which processes and technologies the development team should use in order to meet our clients’ business requirements. This includes not just decisions about technology or tools, but also daily processes that ensure the highest quality of the delivered solution. As a result of aligning the client’s vision for the project with my team’s day-to-day activities, I can have a direct impact on the project’s transparency and quality while decreasing delivery risks at the same time.

Maciej Tomaszewski, Software Architect at Espeo Software

Combining extensive technical knowledge with soft skills that drive project performance

Hiring a software architect for your project can simplify, accelerate, and streamline the process of solving challenges in your project. Software architects not only have impeccable technology-related experience, but they also possess soft skills that enhance performance and bring team members together for a smooth development of your project. As well as overseeing a project and coordinating teams of developers, they prioritize tasks and juggle team members’ assignments throughout the development process to arrive at the best results in the agreed-upon timeline.

Additional benefits of having a software architect in your project

  • Fast and easier testing of your digital solution.
  • Incorporating new features as well as integration between modules is easier and faster.
  • The rate of code degeneration decreases as development progresses.
  • The infrastructure chosen by software architect provides flexibility and scalability.
  • As the business environment changes, the digital solution that is being developed adapts to deliver the value needed.
  • The solution solves business problems better and more effectively.
  • The potential issues are identified before they occur or possible solutions are prepared in advance.
  • Software architect creates documentation that incorporates a high level of understanding of how the system operates on multiple levels of complexity.

Want to hire a software architect to guarantee success of your project? Contact our Sales team for more information using the form below.