General

What Are Smart Contracts? A Brief Overview

Tracy Lee
3 min read
What Are Smart Contracts? A Brief Overview
This article was written over 18 months ago and may contain information that is out of date. Some content may still be relevant, but please refer to official documentation for the latest information.

What are Smart Contracts?

Simply put, smart contracts are distributed blockchain applications that store logic and execute actions when the conditions of a particular agreement are met.
Ex: Imagine you owned a marketplace platform that allows individuals to list items for other users to purchase, but you are tired of having to manually address fraud claims when users purchase items that are not sent. You could code a smart contract that records payment from a buyer, and distributes payment to a seller once a receipt of successful delivery is reflected on the blockchain. In cases where sellers do not meet their obligation to ship within a stated time period, payment can automatically be returned to a user without the time, hassle, or costs of authorizing fraud claims yourself.

Smart contracts, as we understand the term today, originated on the Ethereum network. Ethereum (not to be confused with its cryptocurrency, Ether) is a worldwide blockchain network that allows developers to deploy decentralized applications.

When we say that these applications are “decentralized”, that means that the application, as well as all of the information it receives and outputs, are represented and recorded across a massive network of “nodes” or computers that simultaneously record information. The information is unchangeable, fully transparent, and accessible by all parties involved in the transaction, be it financial or otherwise. This promotes security, automation, and accurate record keeping for both developers and users.

Smart contracts built on the Ethereum network use a language called Solidity. Fortunately, Solidity’s syntax is modeled after JavaScript’s, allowing developers with JS experience to quickly spin-up and deploy these applications with a relatively small learning curve. Additionally, Ethereum serves as the foundational network on which many other blockchain projects, including Chainlink, Aave, Axie, OpenSea, and UniSwap- to name just a few- are built.

Though we have only just begun to exercise the capabilities of smart contracts, many are currently being used to automate interest payments for lenders, simplify and secure the crowdfunding process, and otherwise circumvent third party service providers that either process payments, or verify contracts on behalf of two or more parties.

However, smart contracts have the potential to replace a number of financial and administrative processes that organizations currently outsource, manually process, or process using centralized applications and web architectures that often rely on third-party APIs anyway, and often lack comparable security, speed, and fraud protection.

Deploying Your First Smart Contracts

Deploying your first smart contracts is a critical step towards preparing your development infrastructure to compete in the modern digital marketplace. Teams should take advantage of this period of technological development to create simple smart contracts that demonstrate the advantages of leveraging these revolutionary applications within their organizations.

For example, you could start by creating an employee survey application which anonymously records responses, and waits for a particular volume of responses before distributing them to the department which oversees these surveys. Or, you can create a charitable fundraiser which automatically matches employee contributions up to a certain threshold without ever needing to oversee these payments, or involve a third party financial institution.

We’re Excited to Hear What You Have In Store!

Do you have an idea for a game-changing smart contract, but need some extra help developing and deploying it? Reach out to This Dot Labs for a consultation, and we will be thrilled to help you see just how easily you can begin executing business logic on the blockchain!

About the author

Tracy Lee

Tracy Lee

CEO, This Dot Labs

Partner, This Dot Google Developer Expert (Angular, TC39, Web) RxJS Core Team & Lead for RxJS Learning Team Contributor to Angular, RxJS, EmberJS __Key Strengths:__ - Teaching developer relations strategies - Influencer marketing - Developing brands - Community strategies and maintenance - Creating product launch strategies - Leading marketing operations efforts & standards - Effective conference presence & speaking strategies

Keep reading

View all posts →

Blockchain Adoption in 2023 with Medha Parlikar (Casper Labs) | Engineering Leadership

Tracy Lee hosts the Engineering Leadership Series and introduces Medha Parlikar, the Chief Technology Officer and co founder of Casper Labs. Medha shares that Casper Labs has developed the technology behind the public Casper network, a decentralized blockchain protocol. Medha has a long history in technology, starting in the early 80s when she and her father built computers in their basement. She has been working in IT and personal computing ever since, transitioning into web 2.0 and eventually falling into the blockchain space in 2017. After a project she was involved in ran out of funds during the 2017 ICO crash, Medha co founded Casper Labs with the aim of building a public decentralized blockchain technology that can be utilized by enterprises and brought to the masses. Tracy asks Medha about the evolution of blockchain and its buzzword status. Medha believes that adopting blockchain technology is similar to adopting cloud technology or the internet. She advises CTOs and CIOs to find someone who understands the technology and can guide them through the adoption process, comparing it to having a Sherpa. Companies like Red Hat, AWS, and VMware have played significant roles in leading and developing technologies like Linux and cloud computing. Medha emphasizes that blockchain adoption doesn't have to be daunting or scary. It can be approached incrementally, considering the risk averse nature of enterprises. She encourages companies to proceed with caution and find trusted partners who can help them navigate the disruptive technology and its potential benefits. Tracy shifts the conversation to the challenges surrounding blockchain adoption. Medha explains that scalability, privacy, and regulatory uncertainty are common concerns. However, she believes that with proper planning and a trusted partner, enterprises can overcome these challenges. Blockchain technology holds great value and promise, and she encourages CTOs and CIOs to explore its potential benefits while mitigating risks. Medha shares her perspective on the role of blockchain in the enterprise. She believes that blockchain can provide transparency, trust, and efficiency in various industries, including supply chain management, finance, and healthcare. Blockchain has the potential to revolutionize business processes and enable new models of collaboration and trust. Tracy asks Medha about the role of education and awareness in promoting blockchain adoption. Medha acknowledges the need for education to bridge the gap between technical understanding and business requirements. She highlights the importance of explaining blockchain's benefits in a language that executives and decision makers can understand. Medha also stresses the significance of community building and collaboration within the blockchain ecosystem. She encourages individuals and organizations to actively participate in communities, attend conferences, and engage in discussions to share knowledge, foster innovation, and drive the widespread adoption of blockchain technology. In conclusion, Medha Parlikar, as the CTO of Casper Labs, offers insights into blockchain technology adoption. She emphasizes the need for trusted partners, incremental approaches, and careful consideration of regulatory challenges. Medha envisions blockchain as a transformative force in various industries, and she encourages education, community building, and collaboration to drive its adoption forward. To watch the full conversation, check it out here....

3 mins
Blockchain

Effective Communication Strategies Within The Software Development Organization

Have you ever been in a situation where you thought you were communicating effectively, only to realize later that the other person misunderstood what you were saying? Have you ever communicated with someone only to hear that they felt you provided way too much detail, or that you didn’t provide nearly enough detail? Communication in the workplace is how ideas, updates, directions, etc are transferred to others. Each party in a software development organization has differing needs and expectations when it comes to workplace communication. By learning to tailor your communication to meet the needs of each stakeholder, you can become a more effective communicator and achieve greater success within your organization. The requirements of various parties that you interact with in the workplace can vary wildly depending on several factors. Your awareness of these individualized communication preferences and how you can give each party what they want and need will impact your effectiveness in your daily activities, your perception by others, and even your upward mobility within the organization. That's the power of communication, and why it's so important to master effective communication strategies in the workplace! In this article, we'll explore the different types of stakeholders in a software development organization, the communication strategies that work best for each group, and how effective communication can help you advance your career in the industry. We'll start by discussing the difference between “communication” and “effective communication”, before diving into the different types of stakeholders in a software development organization. Then, we'll explore the communication strategies that work best for each group, and provide actionable tips for improving your communication skills. Communication vs. Effective Communication When it comes to communication, it's important to remember that the intended message is only effective if it's received and understood by the recipient, regardless of their background or level of familiarity with the topic. Effective communication is about sharing thoughts, ideas, opinions, knowledge, and data in a way that ensures that the message is received and understood by the recipient. With effective communication, the sender and receiver leave the exchange feeling satisfied. There is a shared understanding of what was intended to be transmitted by the sender. Stakeholder Types In any organization, you have many different types of parties involved in a software project. Let's group the parties involved in software development into three categories for the sake of clarity: Development Team This consists of individual contributors, project managers, scrum masters, QA testers, UX designers, UI designers, architects, etc. Product Team The product team is made up of a diverse group of individuals, including product owners, business analysts, architects, and more. Executive Team CTO, CEO, etc. Each of these parties requires a different type of communication, a different level, and has different needs from your interactions to allow you to provide value from what you are saying and to for them view you as an effective communicator. Let’s talk a bit about what each of these parties needs, and how you can interact with them in the most meaningful way possible. Development Team This is the most detailed version of the interaction. This group needs to be communicated with on the level of individual tickets and the details of those tickets. When interacting with the development team, it's important to focus on the nitty gritty details of each task, ensuring that everything is sorted through meticulously. With this group, we will sort through specific implementation details. An example of interaction with someone from this group might look like this, “I am currently working on ticket 473, and trying to get the checkbox to behave correctly during testing. I have no blockers currently.” Product Team This group will be communicated with at the level of features and larger increments of work such as project milestones. This group is interested in chunks of a project, milestones, progress on the overall initiative, etc. An example of interaction with someone from this group might look like this, “The team is wrapping up development of the new Project X User Interface and will be moving to the implementation of the functionality next”. Executive Team This group is interested in the conversation at the highest levels of abstraction. Generally, they will be more concerned with things at the overall project level. When updating the executive team, it's important to provide high level updates that summarize progress and focus on next steps. For example, you might say, 'We're making great progress on Showcase X and are on track to complete it soon. Next, we'll be shifting our attention to project Y.' Types of Communication What are some of the types of communication? It’s a great question. When you begin to study various communication styles, you will read about different personality types, and how those personalities interact with the world around them. You might hear things like aggressive, passive aggressive, passive, and assertive communication styles. While understanding these can help you communicate effectively, we will focus on how different roles in a company require different levels of detail and specificity in their interactions. Your Natural Communication Style We all have a natural way that we prefer to communicate. Some are very direct and assertive. We might tend to be very to the point, with no filler, no fluff. Others might naturally tend to be more verbose, to fill in lots of details and context and information. Some naturally meet somewhere in the middle on the spectrum of detail vs direct higher level type of communication. There is no right or wrong answer, but you must be aware of your natural tendencies in conversation, and know how to use those effectively, or tailor your communication style to a specific situation or audience. Benefits of Tailored Communication What are the benefits of tailored communication? The primary benefits of tailoring your communication to different stakeholders are that you can provide each person with what they want and need in a way that resonates with them. For instance, I once had to adapt my communication style when working with a highly detail oriented developer who preferred a more granular level of communication. This eases the amount of effort required by the other party to understand you, and allows them to be more effective in taking your message forward. It increases the perception of your effectiveness, and credibility in their eyes as well. If people know that you are someone who can communicate with multiple parties with varying interests and needs, and do so effectively, you will be trusted with more responsibility, and be given more opportunities. Using Effective Communication To Advance Your Career As you can see, developing effective communication skills is a powerful way to advance your career in the software development industry. How have you seen effective communication impact your work? People who are seen as effective communicators have staying power in an organization. They are viewed as competent and necessary. They are given positions of authority and trusted to get things done. I remember that, when I was just starting out in software development, I struggled to communicate effectively with stakeholders at different levels of the organization. But over time, I learned the value of tailoring my communication to each person's unique needs, and it has paid off in my career in countless ways. Basic Strategies For Improving Your Communication Know your audience When preparing for a presentation or conversation, it's essential to consider your audience and tailor your communication style to their needs. What are some strategies you use to ensure your message is received and understood? Write notes in advance, when possible Draw an outline or even the bulk of what you need to deliver before the time comes. Even if you don’t ultimately use these notes directly, preparing them will help you to distill your thoughts and clarify your message, as well as review that they have the appropriate amount of detail for the intended audience. Practice your delivery Though you will not always be giving a speech, talking through what you plan to say will help you to see gaps, smooth the flow, and make sure that you are comfortable with the material you will be presenting or communicating. Conclusion In this article, we learned about the importance of effective communication, strategies for improving your communication, and the direct and indirect positive impacts these improvements can have on your effectiveness and value in the organization. We explored various strategies and approaches to improve communication. Development in this area can yield amazing results for you as you make the investment to improve your skills. We hope you enjoyed this article, and found it helpful. If you have any questions please feel free to join the discussions going on at starter.dev or on our Discord....

Ken Slachta6 mins
GeneralSoftware Engineer

7 Tips to be a Successful Developer in a Remote Company

As a software developer there are many advantages to working from home and still effectively working as a team to produce high quality results. But how can you be successful in a remote company?...

Jessica Wilkins7 mins
General

International Women's Day Recap

International Women's Day Event For this year's International Women's Day, we hosted a live event with Women Techmakers, featuring talks and a panel discussion on this year's topic: progress over perfection. It was a great conversation on what it's like to be a woman in tech, and how you can help yourself and others thrive in our industry. In case you missed it We have the full event on YouTube if you'd like to watch it yourself (which I highly recommend)! Here's a recap of everything that happened. Getting started in DevRel Pachi Parra Pachi Parra was up first, sharing her journey into DevRel, and tips on how you can get started too! Some highlights include: Roles that are available What a day in the life might look like Her journey into DevRel What a DevRel professional actually does things like public speaking, live coding, writing blogs, and giving talks at conferences. Her best tip for getting started? Find the type of content you like doing, and focus on doing that well! In DevRel, it's easy to spread yourself too thin between all the different types of content available, so focus on the one you like most, find a supportive community, and get yourself out there. :) Breathing Fire: Success and Growth as a Technical Woman Stacy Devino Stacy Devino was up next, providing all kinds of insight into the cycle women go through in their career, as well as tips for each stage of the journey. She opened with an amazing quote: Assume all women are technical and capable of breathing fire. Jessie Frazelle Other highlights: Igniting your world through learning, timing, your network, and leadership. Staying warm by managing your focus and chores, recording your achievements, maintaining relationships, and researching ideas. The key to avoiding burnout keeping a long term perspective, doing things for yourself, and allocating time for the things you enjoy and the people who support you. Riding the imposter wave to senior Jessica Janiuk Jessica Janiuk wrapped up our talks today, providing insight into her journey through tech and the ways we can think about imposter syndrome and allowing ourselves to grow. Some highlights from her talk: A few things to consider: what being "senior" means to companies and to yourself, if you're in the right place, and what you want in your career. A great diagram of the imposter wave the balance between our confidence and feeling like an imposter from this post by Ricardo Luevanos. Considering how often we're comfortable, and that there's an inverse correlation between feeling comfortable and feeling like an imposter (they're opposite each other). We have two choices: we can let it control us, or use that discomfort as a tool. Looking back on our growth and realizing that our current lows are higher than our past highs. Some senior advice: Be authentic, be proud of your work, have good mentors, remember that your work is not your life, and stay uncomfortable. She wrapped up with a brilliant reminder for us all: You are capable. You are valid. You are important. Please take care of yourself. People care about you. If you're struggling, you're not alone. Panel Discussion We rounded out the day with a panel discussion featuring these accomplished women: Erica Stanley Amal Hussein Deborah Kurata Katerina Skroumpelou Jessica Janiuk Stacy Devino Jae Bach Hardie Linda Thompson The conversation flowed naturally, each panelist feeding off of each other's ideas, and we covered some very powerful and helpful tips and reminders for women in today's developer world. Here's a few of my favorite topics or ideas we talked about: What did you learn in the past year? Have hobbies that don't involve tech. Learning to let go of your previous tools. How valuable close personal friends are people you can trust and rely on. Listen to yourself, and take time to introspect and evaluate. Don't over commit! Finding a community and actively contributing to it Women Techmakers! (Our joint sponsor) Make use of social media. "Reach one teach one" always be willing to share your knowledge, and be the person you needed when you were getting started. Engage people who align with your goals and values reach outside your level of age, career scope, experience. The interconnection between you and your people is not exclusive, it's inclusive! The more expansive your sphere is, the better you are at your job. Also we can find community in open source! The way people comment, commit, and support each other within a project counts too. Foundational knowledge vs tooling Understand what problems you're actually solving and what to reach for, more than worrying about the specific tech stack itself. This helps you build your own knowledge map, and pick up skills as you grow. For more senior folks realize when you've mastered something, and focus on clearing the road for those who come next. Learning to delegate if you always do something yourself, you're taking that opportunity away from someone else. Knowing when to ask for help, and that asking is NOT a weakness or failure! It's a strength to know when you need to ask for help. Find your learning method Ask multiple people if you need to until you find the answer that clicks for you! Ask why. Not understanding the answer someone gives you is also not a failure it's different viewpoints. Also learn how the people around you learn so you can help them in the way that best suits them. Communication and collaboration Have compassion for everyone on your team. When you collaborate, you get more done. Being able to communicate and collaborate is a HUGE strength. Don't let anyone make you feel bad for being strong in those! Being the person who's able to "glue" the team together is foundational to a strong team. Fighting stereotypes Things that are commended in men and reprimanded in women, and fighting against those biases Being authentic is the best way to lead your team don't play into a stereotype you don't fit. You don't have to sound "nice" or "pleasing" you're still a strong woman and you're going to be judged a certain way, so don't compromise! Unpacking all the social conditioning and learning to be comfortable with yourself all the time, in all the situations we find ourselves in. Wrapping Up The entire event was filled with wisdom, laughter, and camaraderie. We're so thankful to the ladies who came to speak with us, and hope to see you at the next one!...

Linda Thompson5 mins
GeneralEvents