solidity-land-registry

Solidity Smart Contract: Decentralized Land Registry

https://github.com/block-foundation/solidity-land-registry

Science Score: 44.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (8.1%) to scientific vocabulary

Keywords

architecture block-foundation blockchain blockfoundation eth ethereum hardhat land land-ownership land-registration land-registry real-estate smart-contracts sol solidity typescript urbanism

Keywords from Contributors

mesh interactive
Last synced: 4 months ago · JSON representation ·

Repository

Solidity Smart Contract: Decentralized Land Registry

Basic Info
  • Host: GitHub
  • Owner: block-foundation
  • License: cc-by-sa-4.0
  • Language: Solidity
  • Default Branch: main
  • Homepage: https://www.blockfoundation.io
  • Size: 357 KB
Statistics
  • Stars: 9
  • Watchers: 1
  • Forks: 2
  • Open Issues: 1
  • Releases: 0
Topics
architecture block-foundation blockchain blockfoundation eth ethereum hardhat land land-ownership land-registration land-registry real-estate smart-contracts sol solidity typescript urbanism
Created over 2 years ago · Last pushed 10 months ago
Metadata Files
Readme Changelog Contributing Funding License Code of conduct Citation Codeowners Security Support Governance Authors

README.md

[![GitHub License](https://img.shields.io/github/license/block-foundation/blocktxt?style=flat-square&logo=readthedocs&logoColor=FFFFFF&label=&labelColor=%23041B26&color=%23041B26&link=LICENSE)](https://github.com/block-foundation/solidity-land-registry/blob/main/LICENSE) [![devContainer](https://img.shields.io/badge/Container-Remote?style=flat-square&logo=visualstudiocode&logoColor=%23FFFFFF&label=Remote&labelColor=%23041B26&color=%23041B26)](https://vscode.dev/redirect?url=vscode://ms-vscode-remote.remote-containers/cloneInVolume?url=https://github.com/block-foundation/solidity-land-registry)

Block Foundation Logo

Decentralized Land Registry

Block Foundation Smart Contract Series [Solidity]


Block Foundation Brand

Contents



[![Report a Bug](https://img.shields.io/badge/Report%20a%20Bug-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/solidity-land-registry/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=bug_report.yml) [![Request a Feature](https://img.shields.io/badge/Request%20a%20Feature-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/solidity-land-registry/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=feature_request.yml) [![Ask a Question](https://img.shields.io/badge/Ask%20a%20Question-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/solidity-land-registry/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=question.yml) [![Make a Suggestion](https://img.shields.io/badge/Make%20a%20Suggestion-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/solidity-land-registry/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=suggestion.yml) [![Start a Discussion](https://img.shields.io/badge/Start%20a%20Discussion-GitHub?style=flat-square&&logoColor=%23FFFFFF&color=%23E1E4E5)](https://github.com/block-foundation/solidity-land-registry/issues/new?assignees=&labels=Needs%3A+Triage+%3Amag%3A%2Ctype%3Abug-suspected&projects=&template=discussion.yml)

Welcome to Block Foundation's Decentralized Land Registry project as part of our Smart Contract Series. It leverages the full potential of smart contracts to deliver a secure and transparent system for land transactions.

Introduction

Land registries have long been known for their lack of transparency and the potential for fraud, with numerous cases of illegal land acquisition and property disputes marring their history [^1]. Our solution, a Decentralized Land Registry, built on the foundation of blockchain technology, addresses these issues by providing a public, transparent, and immutable record of land transactions.

With our smart contract for the land registry system, an owner can register their land, update the land details, and even transfer ownership in a seamless and secure manner. Not only does this bring about a new level of trust and reliability to land transactions, but it also significantly reduces the potential for fraudulent activities.

This smart contract for a land registry system in which land transactions are more transparent and trustworthy, and allows an owner to register their land, update the land details, and transfer ownership in a secure way.

The primary functionalities include:

  1. Registration: When a user first registers a parcel of land, they are recorded as the owner of that parcel in the global state of the smart contract.

  2. Land Update: The owner can update the details of their registered land. Any updates are recorded in the global state, ensuring that a history of changes is kept.

  3. Ownership Transfer: If the owner decides to transfer their land, the contract allows for a seamless and secure transfer of ownership.

Quick Start

Before you dive in, make sure you have Node.js and npm installed. You can then proceed to install the necessary dependencies:

Install

sh npm i

To compile the smart contract:

sh npm run compile

Contract

This is a simple implementation and can be expanded to include more complex features, like adding permissions to prevent unauthorized people from registering or transferring land.

Class Overview

``` mermaid classDiagram

class LandRegistry {
    -Land lands
    +registerLand(string, string, uint256)
    +transferLand(address, string)
    +sellLand(address, string)
    +verifyLand(string)
}

class Land {
    -address owner
    -string location
    -string parcelID
    -uint256 price
}


LandRegistry "1" -- "*" Land: has

note for LandRegistry "can register\ncan transfer\ncan sell\ncan verify"
note for Land "can be owned\nhas a location\nhas a name\nhas a price"

```

Class Flow

``` mermaid flowchart TD

registerLand["(mehod)
registerLand"]:::class_dark
transferLand["(mehod)
transferLand"]:::class_dark
sellLand["(mehod)
sellLand"]:::class_dark

LandRegistered["(event)
LandRegistered"]:::class_light
LandTransferred["(event)
LandTransferred"]:::class_light

lands["(mapping)
lands"]:::class_neutral
ownerToLands["(mapping)
ownerToLands"]:::class_neutral

verifyLand["(mehod)
verifyLand"]:::class_dark

registerLand --> LandRegistered
transferLand --> LandTransferred
sellLand --> LandTransferred
LandRegistered --> lands
LandTransferred --> lands
LandRegistered --> ownerToLands
LandTransferred --> ownerToLands
lands <--> verifyLand
ownerToLands <--> verifyLand

classDef class_light fill:#FFFFFF,color:#041B26,stroke:#041B26,stroke-width:2px;
classDef class_neutral fill:#E1E4E5,color:#041B26,stroke:#041B26,stroke-width:2px;
classDef class_dark fill:#041B26,color:#FFFFFF,stroke:#041B26,stroke-width:2px;

```

  • registerLand() allows an address to register a new parcel of land with its location and a unique parcel ID. Emits a LandRegistered event when land is registered.
  • transferLand() allows the current owner of a land parcel to transfer it to a new owner. Emits a LandTransferred event when land is transferred.
  • sellLand() allows a landowner to sell their land to a buyer. This also involves the transfer of Ether (the currency on Ethereum) from the buyer to the seller, representing the payment for the land.
  • verifyLand() allows anyone to verify the details of a land parcel.
  • listLandsByOwner() allows for querying all land parcels owned by a specific address, making it easier to get an overview of one's properties

Moreover:

  • price on the Land struct handles selling land parcels.
  • onlyLandOwner modifier to ensures that only the owner of a land parcel can perform certain actions.

There is also a PyTeal version of this smart-contract, which offers similar functionality for the Algorand blockchain.

Background

Evolving Land Management Systems

As we move deeper into the 21st century, traditional methods of managing land registries have proven to be insufficient, vulnerable to fraud, and fraught with red tape. In response, our project introduces a pioneering vision for the future of land management – the Decentralized Land Registry. By marrying the infallible security of blockchain with the expansive realm of property management, we're reshaping how property transactions are executed and recorded. This transformative project strives to make property transactions as seamless and as transparent as possible, thereby fortifying trust among parties involved.

Incorporating Advanced Technologies

Our Decentralized Land Registry project employs advanced technologies, such as Ethereum's blockchain and Solidity, to craft a robust and secure framework for land transactions. The project is part of our Smart Contract Series that aims to demonstrate how blockchain can revolutionize various sectors and industries. The contract allows landowners to register land parcels, update details, and transfer ownership in a tamper-proof, transparent, and efficient manner.

A Step towards Greater Transparency

Transparency is the cornerstone of any trusted system. Our project ensures complete transparency in land transactions, thereby minimizing disputes and fraudulent activities. By recording transactions on the blockchain, we provide a public and immutable ledger, thus instilling a greater level of confidence in the process. As a result, the Decentralized Land Registry is set to change the way we perceive land transactions, ushering in a new era of trust, transparency, and efficiency.

Open Source and Community Oriented

As an open-source project, the Decentralized Land Registry encourages community participation and contribution. We believe that the combined efforts and creativity of the global developer community can accelerate the evolution of our project and bring innovative solutions to the fore. We warmly welcome developers worldwide to join our mission, contribute to our codebase, and help us build a more transparent, efficient, and secure system for land transactions.

Development Resources

Authors

This is an open-source project by the Block Foundation.

The Block Foundation mission is enabling architects to take back initiative and contribute in solving the mismatch in housing through blockchain technology. Therefore the Block Foundation seeks to unschackle the traditional constraints and construct middle ground between rent and the rigidity of traditional mortgages.

website: www.blockfoundation.io

Contributing

We'd love for you to contribute and to make this project even better than it is today! Please refer to the contribution guidelines for information.

Other Repositories

  • https://github.com/vrii14/Land-Registration-with-Blockchain

Block Foundation Smart Contract Series

| | Solidity | Teal | | --------------------------------- | ----------- | ----------- | | Template | >>> | >>> | | Architectural Design | >>> | >>> | | Architecture Competition | >>> | >>> | | Housing Cooporative | >>> | >>> | | Land Registry | >>> | >>> | | Real-Estate Crowdfunding | >>> | >>> | | Rent-to-Own | >>> | >>> | | Self-Owning Building | >>> | >>> | | Smart Home | >>> | >>> |

Academic Resources

Citation

A sample citation (APA 6th edition) might look like:

txt van Vianen, L. B. (2023). solidity-land-registry (Version 0.0.1) [Computer software].

BibTeX

``` bib @misc{vanvianensolidity-land-registry_2023, title = {solidity-land-registry}, copyright = {CC-BY-SA-4.0}, url = {https://github.com/block-foundation/solidity-land-registry}, abstract = {Solidity Smart Contract: Decentralized Land Registry}, urldate = {2023-07-25}, author = {van Vianen, Lars Bastiaan}, month = jul, year = {2023}, note = {original-date: 2023-07-23T22:52:59Z}, }

```


Colophon

Authors

This is an open-source project by the Block Foundation.

The Block Foundation mission is enabling architects to take back initiative and contribute in solving the mismatch in housing through blockchain technology. Therefore the Block Foundation seeks to unschackle the traditional constraints and construct middle ground between rent and the rigidity of traditional mortgages.

website: www.blockfoundation.io

Development Resources

Contributing

We'd love for you to contribute and to make this project even better than it is today! Please refer to the contribution guidelines for information.

Legal Information

Copyright

Copyright © 2023 Stichting Block Foundation. All Rights Reserved.

License

Except as otherwise noted, the content in this repository is licensed under the Creative Commons Attribution 4.0 International (CC BY 4.0) License, and code samples are licensed under the Apache 2.0 License.

Also see LICENSE and LICENSE-CODE.

Disclaimer

THIS SOFTWARE IS PROVIDED AS IS WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESS OR IMPLIED, INCLUDING ANY IMPLIED WARRANTIES OF FITNESS FOR A PARTICULAR PURPOSE, MERCHANTABILITY, OR NON-INFRINGEMENT.

Owner

  • Name: Block Foundation
  • Login: block-foundation
  • Kind: organization
  • Email: info@blockfoundation.io
  • Location: Netherlands

The Block Foundation mission is enabling architects to take back initiative and contribute in solving the mismatch in housing through blockchain technology.

Citation (CITATION.cff)

# https://github.com/citation-file-format/citation-file-format/blob/main/schema.json

# The version of CFF used for providing the citation metadata.
# type: string
cff-version: 1.2.0



# =============================================================================
# General
# =============================================================================


# A message to the human reader of the file to let them know what to do with the
# citation metadata.
# type: string
message: >-
  If you use this software, please cite it using
  the metadata from this file.



# The name of the software or dataset.
# type: string
title: "LandRegistry: A Blockchain-based Land Registry System"

# The author(s) of the software or dataset.
# type: array
authors:
  - family-names: Vianen
    name-particle: van
    given-names: Lars Bastiaan
    affiliation: Scape Agency
    email: lars@vianen.com
    website: "https://www.vianen.com"
    alias: "@vanvianen"
    orcid: "https://orcid.org/0000-0002-8790-8630"

# The type of the work.
# type: string
# default: software
type: software

# A description of the software or dataset.
# type: string
abstract: >-
  ""

# The URL of a landing page/website for the software or dataset.
url: "https://github.com/block-foundation/solidity-land-registry"

# The contact person, group, company, etc. for the software or dataset.
# type: array
contact: 
  - name: Block Foundation
    email: info@blockfoundation.io
    city: Amsterdam
    country: The Netherlands
    website: "https://www.blockfoundation.io"
    # orcid: 

# Keywords that describe the work.
# type: array
keywords:
  - Block Foundation
  - Blockchain
  - Architecture
  - Real-Estate
  - Smart-Contract
  - Ethereum
  - Solidity
  - Land Registry
  - Land Registration
  - Land Ownerschip
  - Urban Planning


# =============================================================================
# Version
# =============================================================================

# The version of the software or dataset.
version: 0.0.1

# The date the work has been released.
date-released: 2023-07-01

# The URL of the software or dataset in a repository (when the repository is
# neither a source code repository nor a build artifact repository).
repository: "https://github.com/block-foundation/solidity-land-registry"

# The URL of the software in a build artifact/binary repository.
repository-artifact: "https://github.com/block-foundation/solidity-land-registry"

# The URL of the software or dataset in a source code repository.
repository-code: "https://github.com/block-foundation/solidity-land-registry"

# 
# commit: 


# =============================================================================
# Citation
# =============================================================================

# The DOI of the work (i.e., 10.5281/zenodo.1003150,
# not the resolver URL http://doi.org/10.5281/zenodo.1003150).",
# type: string
# doi: "10.5281/zenodo.XXXXXXX"

# The identifiers of the software or dataset.
# type: array
# identifiers:

# A reference to another work that should be cited instead of the software or
# dataset itself.
preferred-citation:
  # abbreviation: ""
  # abstract: ""
  # authors: ""
  # collection-doi: ""
  # collection-title: ""
  # collection-type: ""
  # commit: ""
  # conference: ""
  # contact: ""
  copyright: "Copyright 2023 Stichting Block Foundation"
  # data-type: ""
  # database: ""
  # database-provider: ""
  # date-accessed: ""
  # date-downloaded: ""
  # date-published: ""
  # date-released: ""
  # department: ""
  # doi: "10.5281/zenodo.XXXXXXX"
  # edition: ""
  # editors: ""
  # editors-series: ""
  # end: ""
  # entry: ""
  # filename: ""
  # format: ""
  # identifiers: ""
  institution: "Block Foundation"
  # isbn: ""
  # issn: ""
  # issue: ""
  # issue-date: ""
  # issue-title: ""
  # journal: ""
  # keywords: ""
  # languages: "en"
  # license: ""
  # license-url: ""
  # loc-end: ""
  # loc-start: ""
  # location: ""
  # medium: ""
  # month: ""
  # nihmsid: ""
  # notes: ""
  # number: ""
  # number-volumes: ""
  # pages: ""
  # patent-states: ""
  # pmcid: ""
  publisher: "Block Foundation"
  # recipients: ""
  # repository: ""
  # repository-artifact: ""
  # repository-code: ""
  # scope: ""
  # section: ""
  # senders: ""
  # start: ""
  # status: ""
  # term: ""
  # thesis-type: ""
  # title: ""
  # translators: ""
  type: "software-code"
  # url: ""
  # version: ""
  # volume: ""
  # volume-title: ""
  # year: ""
  # year-original: ""

# Reference(s) to other creative works.
# type: array
# references: 


# =============================================================================
# License
# =============================================================================

#
license: "Apache-2.0"

# The URL of the license text under which the software or dataset is licensed
# (only for non-standard licenses not included in the SPDX License List).
license-url: "https://www.apache.org/licenses/LICENSE-2.0"

GitHub Events

Total
  • Watch event: 3
  • Delete event: 19
  • Issue comment event: 57
  • Pull request event: 39
  • Create event: 22
Last Year
  • Watch event: 3
  • Delete event: 19
  • Issue comment event: 57
  • Pull request event: 39
  • Create event: 22

Committers

Last synced: almost 2 years ago

All Time
  • Total Commits: 215
  • Total Committers: 2
  • Avg Commits per committer: 107.5
  • Development Distribution Score (DDS): 0.047
Past Year
  • Commits: 215
  • Committers: 2
  • Avg Commits per committer: 107.5
  • Development Distribution Score (DDS): 0.047
Top Committers
Name Email Commits
Lars van Vianen l****s@v****m 205
dependabot[bot] 4****] 10
Committer Domains (Top 20 + Academic)

Issues and Pull Requests

Last synced: 4 months ago

All Time
  • Total issues: 0
  • Total pull requests: 38
  • Average time to close issues: N/A
  • Average time to close pull requests: 12 days
  • Total issue authors: 0
  • Total pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.82
  • Merged pull requests: 10
  • Bot issues: 0
  • Bot pull requests: 38
Past Year
  • Issues: 0
  • Pull requests: 21
  • Average time to close issues: N/A
  • Average time to close pull requests: 14 days
  • Issue authors: 0
  • Pull request authors: 1
  • Average comments per issue: 0
  • Average comments per pull request: 1.9
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 21
Top Authors
Issue Authors
Pull Request Authors
  • dependabot[bot] (69)
Top Labels
Issue Labels
Pull Request Labels
stale (25) closed-due-inactivity (19)

Dependencies

.devcontainer/Dockerfile docker
  • ubuntu 22.04 build
package-lock.json npm
  • 1149 dependencies
package.json npm
  • @openzeppelin/contracts ^4.2.0
  • @truffle/hdwallet-provider ^1.4.2
  • chai ^4.3.4
  • chai-as-promised ^7.1.1
  • chai-bn ^0.3.0
  • dotenv ^10.0.0
  • ethereum-waffle ^3.4.0
  • openzeppelin-solidity ^2.2.0
  • prettier ^2.3.2
  • solc ^0.5.2
  • solc-js ^0.5.2
  • truffle-hdwallet-provider ^1.0.10
  • web3 ^4.0.3