curl --request POST \
--url https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address} \
--header 'Content-Type: application/json' \
--data '
{
"creationTransactionHash": "0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206"
}
'import requests
url = "https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}"
payload = { "creationTransactionHash": "0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
creationTransactionHash: '0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206'
})
};
fetch('https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'creationTransactionHash' => '0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}"
payload := strings.NewReader("{\n \"creationTransactionHash\": \"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}")
.header("Content-Type", "application/json")
.body("{\n \"creationTransactionHash\": \"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"creationTransactionHash\": \"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206\"\n}"
response = http.request(request)
puts response.read_body{
"verificationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"customCode": "unsupported_chain",
"message": "The chain with chainId 9429413 is not supported",
"errorId": "1ac6b91a-0605-4459-93dc-18f210a70192"
}{
"customCode": "already_verified",
"message": "Contract 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 on chain 31337 is already verified with runtimeMatch and creationMatch both being exact matches.",
"errorId": "23aaf52e-168a-4cfa-8463-65ddfb792efc"
}{
"customCode": "duplicate_verification_request",
"message": "Contract 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 on chain 31337 is already being verified.",
"errorId": "23aaf52e-168a-4cfa-8463-65ddfb792efc"
}{
"customCode": "internal_error",
"message": "Something went wrong",
"errorId": "1ac6b91a-0605-4459-93dc-18f210a70192"
}Verify contract via similarity search
Starts a verification job that searches the Sourcify database for contracts whose runtime bytecode is similar to the contract deployed at the given address. The job will attempt to verify against each candidate until a match is found or the candidate list is exhausted.
curl --request POST \
--url https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address} \
--header 'Content-Type: application/json' \
--data '
{
"creationTransactionHash": "0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206"
}
'import requests
url = "https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}"
payload = { "creationTransactionHash": "0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206" }
headers = {"Content-Type": "application/json"}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'Content-Type': 'application/json'},
body: JSON.stringify({
creationTransactionHash: '0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206'
})
};
fetch('https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'creationTransactionHash' => '0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}"
payload := strings.NewReader("{\n \"creationTransactionHash\": \"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}")
.header("Content-Type", "application/json")
.body("{\n \"creationTransactionHash\": \"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://sourcify.dev/server/v2/verify/similarity/{chainId}/{address}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Content-Type"] = 'application/json'
request.body = "{\n \"creationTransactionHash\": \"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206\"\n}"
response = http.request(request)
puts response.read_body{
"verificationId": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}{
"customCode": "unsupported_chain",
"message": "The chain with chainId 9429413 is not supported",
"errorId": "1ac6b91a-0605-4459-93dc-18f210a70192"
}{
"customCode": "already_verified",
"message": "Contract 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 on chain 31337 is already verified with runtimeMatch and creationMatch both being exact matches.",
"errorId": "23aaf52e-168a-4cfa-8463-65ddfb792efc"
}{
"customCode": "duplicate_verification_request",
"message": "Contract 0xe7f1725E7734CE288F8367e1Bb143E90bb3F0512 on chain 31337 is already being verified.",
"errorId": "23aaf52e-168a-4cfa-8463-65ddfb792efc"
}{
"customCode": "internal_error",
"message": "Something went wrong",
"errorId": "1ac6b91a-0605-4459-93dc-18f210a70192"
}Path Parameters
The chainId number of the EVM chain
1 - 20^\d+$"11155111"
Contract's 20 byte address in hex string with the 0x prefix. Case insensitive.
42(\b0x[a-fA-F0-9]{40}\b)"0x2738d13E81e30bC615766A0410e7cF199FD59A83"
Body
The hash of the transaction that created this contract. Optional.
(\b0x[a-f0-9]{64}\b)"0xb6ee9d528b336942dd70d3b41e2811be10a473776352009fd73f85604f5ed206"
Response
Successfully submitted the verification. The server started to process the verification.
You can follow the verification status via the returned verificationId at GET /v2/verify/{verificationId}
Was this page helpful?